std:: begin, std:: cbegin
|
Definido en el encabezado
<array>
|
||
|
Definido en el encabezado
<deque>
|
||
|
Definido en el encabezado
<flat_map>
|
||
|
Definido en el encabezado
<flat_set>
|
||
|
Definido en el encabezado
<forward_list>
|
||
|
Definido en el encabezado
<inplace_vector>
|
||
|
Definido en el encabezado
<iterator>
|
||
|
Definido en el encabezado
<list>
|
||
|
Definido en el encabezado
<map>
|
||
|
Definido en el encabezado
<regex>
|
||
|
Definido en el encabezado
<set>
|
||
|
Definido en el encabezado
<span>
|
||
|
Definido en el encabezado
<string>
|
||
|
Definido en el encabezado
<string_view>
|
||
|
Definido en el encabezado
<unordered_map>
|
||
|
Definido en el encabezado
<unordered_set>
|
||
|
Definido en el encabezado
<vector>
|
||
|
template
<
class
C
>
auto begin ( C & c ) - > decltype ( c. begin ( ) ) ; |
(1) |
(desde C++11)
(constexpr desde C++17) |
|
template
<
class
C
>
auto begin ( const C & c ) - > decltype ( c. begin ( ) ) ; |
(2) |
(desde C++11)
(constexpr desde C++17) |
|
template
<
class
T,
std::
size_t
N
>
T * begin ( T ( & array ) [ N ] ) ; |
(3) |
(desde C++11)
(noexcept desde C++14) (constexpr desde C++14) |
|
template
<
class
C
>
constexpr
auto
cbegin
(
const
C
&
c
)
noexcept
(
/* ver más abajo */
)
|
(4) | (desde C++14) |
Devuelve un iterador al inicio del rango dado.
Contenidos |
Parámetros
| c | - |
un contenedor o vista con una función miembro
begin
|
| array | - | un array de tipo arbitrario |
Valor de retorno
Excepciones
Sobrecargas
Sobrecargas personalizadas de
begin
pueden proporcionarse para clases y enumeraciones que no exponen una función miembro
begin()
adecuada, pero que pueden ser iteradas. Las siguientes sobrecargas ya están proporcionadas por la biblioteca estándar:
|
sobrecarga
std::begin
(plantilla de función) |
|
|
(C++11)
|
sobrecarga
std::begin
(plantilla de función) |
|
soporte para bucle for basado en rangos
(función) |
|
|
soporte para bucle for basado en rangos
(función) |
Similar al uso de
swap
(descrito en
Swappable
), el uso típico de la función
begin
en contexto genérico es equivalente a
using
std
::
begin
;
begin
(
arg
)
;
, lo que permite que tanto las sobrecargas seleccionadas por
ADL
para tipos definidos por el usuario como las plantillas de función de la biblioteca estándar aparezcan en el mismo conjunto de sobrecargas.
template<typename Container, typename Function> void for_each(Container&& cont, Function f) { using std::begin; auto it = begin(cont); using std::end; auto end_it = end(cont); while (it != end_it) { f(*it); ++it; } }
|
Las sobrecargas de
|
(desde C++20) |
Notas
Las sobrecargas que no son de arreglo reflejan exactamente el comportamiento de
C::begin
. Sus efectos pueden ser sorprendentes si la función miembro no tiene una implementación razonable.
std::cbegin
se introduce para unificar los accesos a rangos de miembros y no miembros. Véase también
LWG issue 2128
.
Si
C
es una vista de constante superficial,
std::cbegin
puede devolver un iterador mutable. Este comportamiento es inesperado para algunos usuarios. Véase también
P2276
y
P2278
.
Ejemplo
#include <iostream> #include <iterator> #include <vector> int main() { std::vector<int> v = {3, 1, 4}; auto vi = std::begin(v); std::cout << std::showpos << *vi << '\n'; int a[] = {-5, 10, 15}; auto ai = std::begin(a); std::cout << *ai << '\n'; }
Salida:
+3 -5
Véase también
|
(C++11)
(C++14)
|
devuelve un iterador al final de un contenedor o array
(plantilla de función) |
|
(C++20)
|
devuelve un iterador al inicio de un rango
(objeto punto de personalización) |
|
(C++20)
|
devuelve un iterador al inicio de un rango de solo lectura
(objeto punto de personalización) |