std:: begin (std::valarray)
|
template
<
class
T
>
/* ver abajo */ begin ( valarray < T > & v ) ; |
(1) | (desde C++11) |
|
template
<
class
T
>
/* ver abajo */ begin ( const valarray < T > & v ) ; |
(2) | (desde C++11) |
La sobrecarga de
std::begin
para
valarray
retorna un iterador de tipo no especificado que referencia al primer elemento del arreglo numérico.
- cumplir con los requisitos de mutable LegacyRandomAccessIterator ,
|
(desde C++20) |
-
tener un tipo miembro
value_type, que esT, y -
tener un tipo miembro
reference, que esT&.
- cumplir con los requisitos de constante LegacyRandomAccessIterator ,
|
(desde C++20) |
-
tener un tipo miembro
value_type, que esT, y -
tener un tipo miembro
reference, que esconst T&.
El iterador devuelto por esta función se invalida cuando se llama a la función miembro
resize()
en
v
o cuando termina el tiempo de vida de
v
, lo que ocurra primero.
Contenidos |
Parámetros
| v | - | un array numérico |
Valor de retorno
Iterador al primer valor en el arreglo numérico.
Excepciones
Puede lanzar excepciones definidas por la implementación.
Notas
A diferencia de otras funciones que toman argumentos
std::valarray
,
begin()
no puede aceptar los tipos de reemplazo (como los tipos producidos por plantillas de expresión) que pueden devolverse de expresiones que involucran valarrays:
std::
begin
(
v1
+
v2
)
no es portable,
std::
begin
(
std::
valarray
<
T
>
(
v1
+
v2
)
)
debe utilizarse en su lugar.
La intención de esta función es permitir que los bucles de rango funcionen con valarrays, no proporcionar semántica de contenedor.
Ejemplo
#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; }
Salida:
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++!
Informes de defectos
Los siguientes informes de defectos que modifican el comportamiento se aplicaron retroactivamente a los estándares publicados anteriormente de C++.
| DR | Aplicado a | Comportamiento publicado | Comportamiento correcto |
|---|---|---|---|
| LWG 2058 | C++11 |
1.
begin()
estaba requerido para soportar tipos de reemplazo
2. no estaba especificado cuándo se invalidarían los iteradores devueltos |
1. no requerido
2. especificado |
Véase también
|
(C++11)
|
especializa
std::end
(plantilla de función) |