Namensräume
Varianten
Aktionen

std::end(std::valarray)

Von cppreference.com
< cpp‎ | numeric‎ | valarray
 
 
 
 
template< class T >
/* siehe unten */ end( valarray<T>& v );
(1) (seit C++11)
template< class T >
/* siehe unten */ end( const valarray<T>& v );
(2) (seit C++11)

Die Überladung von std::end für valarray gibt einen Iterator eines nicht spezifizierten Typs zurück, der auf das Element nach dem letzten Element im numerischen Array verweist.

1) Der Rückgabetyp muss
(seit C++20)
  • einen Member-Typ value_type haben, der T ist, und
  • einen Member-Typ reference haben, der T& ist.
2) Der Rückgabetyp muss
(seit C++20)
  • einen Member-Typ value_type haben, der T ist, und
  • einen Member-Typ reference haben, der const T& ist.

Der von dieser Funktion zurückgegebene Iterator wird ungültig, wenn die Member-Funktion resize() für v aufgerufen wird oder wenn die Lebenszeit von v endet, je nachdem, was zuerst eintritt.

Inhalt

[bearbeiten] Parameter

v - ein numerisches Array

[bearbeiten] Rückgabewert

Iterator auf das Element nach dem letzten Wert im numerischen Array.

[edit] Exceptions

Kann implementierungsdefinierte Ausnahmen auslösen.

[bearbeiten] Anmerkungen

Im Gegensatz zu anderen Funktionen, die std::valarray-Argumente annehmen, kann end() keine Ersatztypen (wie die von Ausdrucks-Templates erzeugten Typen) akzeptieren, die von Ausdrücken mit valarrays zurückgegeben werden können: std::end(v1 + v2) ist nicht portabel, stattdessen muss std::end(std::valarray<T>(v1 + v2)) verwendet werden.

Die Absicht dieser Funktion ist es, zu ermöglichen, dass Bereichsschleifen mit valarrays funktionieren, nicht Container-Semantik bereitzustellen.

[bearbeiten] Beispiel

#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; });
}

Ausgabe

Hello, C++!

[bearbeiten] Fehlerberichte

Die folgenden Verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.

DR angewendet auf Verhalten wie veröffentlicht Korrigiertes Verhalten
LWG 2058 C++11 1. end() musste Ersatztypen unterstützen
2. es war nicht spezifiziert, wann die zurückgegebenen Iteratoren ungültig werden
1. Nicht erforderlich
2. Spezifiziert

[bearbeiten] Siehe auch

überlädt std::begin
(function template) [edit]