Namespaces
Variants

std::valarray<T>::end

С ru.cppreference.net
 
 
 
 
iterator       end();
(1) (начиная с C++11)
const_iterator end() const;
(2) (начиная с C++11)

Возвращает итератор, ссылающийся на элемент, следующий за последним элементом в числовом массиве.

Итератор, возвращаемый этой функцией, становится недействительным, когда функция-член resize() вызывается для v или когда заканчивается время жизни v, в зависимости от того, что наступит раньше.

Параметры

v - числовой массив

Возвращаемое значение

Итератор на элемент, следующий за последним элементом в числовом массиве.

Исключения

Может генерировать исключения, определяемые реализацией.

Примечания

В отличие от других функций, которые принимают аргументы std::valarray, end() не может принимать замещающие типы (такие как типы, порождённые шаблонами выражений), которые могут быть возвращены из выражений, включающих valarrays: (v1 + v2).end() не является переносимым, вместо него следует использовать std::valarray<T>(v1 + v2).end().

Назначение этой функции — позволить циклам for по диапазону работать с valarrays, а не обеспечить семантику контейнера.

Пример

#include <algorithm>
#include <iostream>
#include <valarray>

int main()
{
    const std::valarray<char> va
    {
        'H', 'e', 'l', 'l', 'o', 
        ',', ' ', 
        'C', '+', '+', '!', '\n'
    };

    std::for_each(va.begin(), va.end(), [](char c){ std::cout << c; });
}

Вывод:

Hello, C++!

Отчёты о дефектах

Следующие отчёты о дефектах, изменяющие поведение, были применены ретроактивно к ранее опубликованным стандартам C++.

DR Применён к Поведение как опубликовано Корректное поведение
LWG 2058 C++11 1. end() требовалось поддерживать замещающие типы
2. не было указано, когда возвращаемые итераторы станут недействительными
1. не требуется
2. указано
P3016R6 C++11 функции end(), не являющиеся членами, внесли несоответствие в доступ по диапазону изменено: end() теперь функции-члены

См. также

(C++11)
получает начальный итератор valarray
(открытая функция-член)