Namespaces
Variants

std:: end (std::valarray)

From cppreference.net
template < class T >
/* см. ниже */ end ( valarray < T > & v ) ;
(1) (начиная с C++11)
template < class T >
/* см. ниже */ end ( const valarray < T > & v ) ;
(2) (начиная с C++11)

Перегрузка std::end для valarray возвращает итератор неуказанного типа, ссылающийся на элемент, следующий за последним элементом в числовом массиве.

1) Возвращаемый тип должен
(since C++20)
  • иметь тип-член value_type , который является T , и
  • иметь тип-член reference , который является T& .
2) Возвращаемый тип должен
(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 ) ) должно использоваться вместо этого.

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

Пример

#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. указано

Смотрите также

перегружает std::begin
(шаблон функции)