std:: end (std::valarray)
|
template
<
class
T
>
/* voir ci-dessous */ end ( valarray < T > & v ) ; |
(1) | (depuis C++11) |
|
template
<
class
T
>
/* voir ci-dessous */ end ( const valarray < T > & v ) ; |
(2) | (depuis C++11) |
La surcharge de
std::end
pour
valarray
retourne un itérateur de type non spécifié se référant à l'élément situé après le dernier élément du tableau numérique.
- satisfaire aux exigences de mutable LegacyRandomAccessIterator ,
|
(depuis C++20) |
-
avoir un type membre
value_type, qui estT, et -
avoir un type membre
reference, qui estT&.
- satisfaire aux exigences d'un itérateur constant LegacyRandomAccessIterator ,
|
(depuis C++20) |
-
avoir un type membre
value_type, qui estT, et -
avoir un type membre
reference, qui estconst T&.
L'itérateur retourné par cette fonction est invalidé lorsque la fonction membre
resize()
est appelée sur
v
ou lorsque la durée de vie de
v
se termine, selon la première éventualité.
Table des matières |
Paramètres
| v | - | un tableau numérique |
Valeur de retour
Itérateur vers l'élément suivant le dernier élément du tableau numérique.
Exceptions
Peut lever des exceptions définies par l'implémentation.
Notes
Contrairement aux autres fonctions qui prennent des arguments
std::valarray
,
end()
ne peut pas accepter les types de remplacement (tels que les types produits par les modèles d'expression) qui peuvent être renvoyés par des expressions impliquant des valarrays :
std::
end
(
v1
+
v2
)
n'est pas portable,
std::
end
(
std::
valarray
<
T
>
(
v1
+
v2
)
)
doit être utilisé à la place.
L'intention de cette fonction est de permettre aux boucles for à portée de fonctionner avec les valarrays, non pas de fournir une sémantique de conteneur.
Exemple
#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; }); }
Sortie :
Hello, C++!
Rapports de défauts
Les rapports de défauts modifiant le comportement suivants ont été appliqués rétroactivement aux normes C++ précédemment publiées.
| DR | Appliqué à | Comportement tel que publié | Comportement correct |
|---|---|---|---|
| LWG 2058 | C++11 |
1.
end()
devait supporter les types de remplacement
2. il n'était pas spécifié quand les itérateurs retournés seraient invalidés |
1. non requis
2. spécifié |
Voir aussi
|
(C++11)
|
surcharge
std::begin
(modèle de fonction) |