std::end(std::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.
- die Anforderungen von mutable LegacyRandomAccessIterator erfüllen,
|
(seit C++20) |
- einen Member-Typ
value_typehaben, derTist, und - einen Member-Typ
referencehaben, derT&ist.
- die Anforderungen von constant LegacyRandomAccessIterator erfüllen,
|
(seit C++20) |
- einen Member-Typ
value_typehaben, derTist, und - einen Member-Typ
referencehaben, derconst 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ützen2. es war nicht spezifiziert, wann die zurückgegebenen Iteratoren ungültig werden |
1. Nicht erforderlich 2. Spezifiziert |
[bearbeiten] Siehe auch
| (C++11) |
überlädt std::begin (function template) |