std::valarray<T>::end
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 (открытая функция-член) |