std::end(std::valarray)
template< class T > /* see below */ end( valarray<T>& v ); | (1) | (since C++11) |
template< class T > /* see below */ end( const valarray<T>& v ); | (2) | (since C++11) |
Перегрузка std::end для valarray возвращает итератор неопределённого типа, ссылающийся на элемент, следующий за последним элементом числового массива.
- удовлетворять требованиям изменяемого LegacyRandomAccessIterator,
| (since C++20) |
- иметь член-тип
value_type, который являетсяT, и - иметь член-тип
reference, который являетсяT&.
- удовлетворять требованиям постоянного LegacyRandomAccessIterator,
| (since C++20) |
- иметь член-тип
value_type, который являетсяT, и - иметь член-тип
reference, который являетсяconst T&.
Итератор, возвращаемый этой функцией, становится недействительным при вызове метода resize() для v или при завершении жизненного цикла v, в зависимости от того, что произойдёт раньше.
Параметры
| v | - | числовой массив |
Возвращаемое значение
Итератор на элемент, следующий за последним элементом числового массива.
Исключения
Может выбросить исключение с определением, зависящим от реализации.
Примечания
В отличие от других функций, принимающих аргументы std::valarray, end() не может принимать типы замещения (например, типы, производимые шаблонами выражений), которые могут быть возвращены выражениями, включающими valarray: std::end(v1 + v2) не является переносимым, вместо него следует использовать std::end(std::valarray<T>(v1 + v2)).
Цель этой функции — позволить циклам range for работать с valarray, а не предоставлять семантику контейнера.
Пример
#include <algorithm>
#include <iostream>
#include <valarray>
int main()
{
const std::valarray<char> va
{
'H', 'e', 'l', 'l', 'o',
',', ' ',
'C', '+', '+', '!', '\n'
};
std::for_each(std::begin(va), std::end(va),
[](char c){ std::cout << c; });
}Вывод:
Hello, C++!
Отчёты об ошибках
Следующие отчёты об ошибках, изменяющие поведение, были применены ретроактивно к ранее опубликованным стандартам C++.
| DR | Применено к | Поведение, как опубликовано | Правильное поведение |
|---|---|---|---|
| LWG 2058 | C++11 | 1. end() должно было поддерживать типы замещения2. не было указано, когда возвращаемые итераторы станут недействительными | 1. не требуется 2. указано |
См. также
|
(C++11) | перегрузки std::begin (шаблон функции) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/numeric/valarray/end2