std::begin(std::valarray)
| template< class T > /* siehe unten */ begin( valarray<T>& v ); |
(1) | (seit C++11) |
| template< class T > /* siehe unten */ begin( const valarray<T>& v ); |
(2) | (seit C++11) |
Die Überladung von std::begin für valarray gibt einen Iterator unbekannten Typs zurück, der auf das erste Element im numerischen Array verweist.
- die Anforderungen an einen veränderlichen LegacyRandomAccessIterator erfüllen,
|
(seit C++20) |
- einen Mitgliedstyp
value_typehaben, derTist, und - einen Mitgliedstyp
referencehaben, derT&ist.
- die Anforderungen an einen konstanten LegacyRandomAccessIterator erfüllen,
|
(seit C++20) |
- einen Mitgliedstyp
value_typehaben, derTist, und - einen Mitgliedstyp
referencehaben, derconst T&ist.
Der von dieser Funktion zurückgegebene Iterator wird ungültig, wenn die Memberfunktion resize() für v aufgerufen wird oder wenn das Lebenszeit von v endet, je nachdem, was zuerst eintritt.
Inhalt |
[bearbeiten] Parameter
| v | - | ein numerisches Array |
[bearbeiten] Rückgabewert
Iterator zum ersten Wert im numerischen Array.
[edit] Exceptions
Kann implementierungsdefinierte Ausnahmen auslösen.
[bearbeiten] Hinweise
Im Gegensatz zu anderen Funktionen, die std::valarray als Argumente nehmen, kann begin() keine Ersatztypen (wie die von Expression Templates erzeugten Typen) akzeptieren, die von Ausdrücken mit Valarrays zurückgegeben werden können: std::begin(v1 + v2) ist nicht portierbar, stattdessen muss std::begin(std::valarray<T>(v1 + v2)) verwendet werden.
Die Absicht dieser Funktion ist es, Bereichsschleifen mit Valarrays zu ermöglichen, nicht Containersemantik bereitzustellen.
[bearbeiten] Beispiel
#include <algorithm> #include <iostream> #include <valarray> void show(const std::valarray<int>& v) { std::for_each(std::begin(v), std::end(v), [](int c) { std::cout << c << ' '; }); std::cout << '\n'; }; int main() { const std::valarray<int> x{47, 70, 37, 52, 90, 23, 17, 33, 22, 16, 21, 4}; const std::valarray<int> y{25, 31, 71, 56, 21, 21, 15, 34, 21, 27, 12, 6}; show(x); show(y); const std::valarray<int> z{x + y}; for (char c : z) std::cout << c; }
Ausgabe
47 70 37 52 90 23 17 33 22 16 21 4 25 31 71 56 21 21 15 34 21 27 12 6 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. begin() wurde angefordert, um Ersatztypen zu unterstützen2. Es war unklar, wann die zurückgegebenen Iteratoren ungültig werden |
1. Nicht erforderlich 2. Spezifiziert |
[bearbeiten] Siehe auch
| (C++11) |
spezialisiert std::end (function template) |