Namespaces
Variants

std::rbegin, std::crbegin

De es.cppreference.net
 
 
Biblioteca de iteradores
Conceptos de iteradores
Primitivas de iterador
Conceptos y utilidades de algoritmos
Conceptos de invocación indirecta
Requisitos comunes de algoritmos
(C++20)
(C++20)
(C++20)
Utilidades
(C++20)
Adaptadores de iterador
Acceso a rangos
(C++11)(C++14)
(C++14)(C++14)  
(C++11)(C++14)
(C++14)(C++14)  
(C++17)(C++20)
(C++17)
(C++17)
 
Definido en el encabezado <array>
Definido en el encabezado <deque>
Definido en el encabezado <flat_map>
 (desde C++23)
Definido en el encabezado <flat_set>
 (desde C++23)
Definido en el encabezado <forward_list>
Definido en el encabezado <inplace_vector>
 (desde C++26)
Definido en el encabezado <iterator>
Definido en el encabezado <list>
Definido en el encabezado <map>
Definido en el encabezado <optional>
 (desde C++26)
Definido en el encabezado <regex>
Definido en el encabezado <set>
Definido en el encabezado <span>
 (desde C++20)
Definido en el encabezado <stacktrace>
 (desde C++23)
Definido en el encabezado <string>
Definido en el encabezado <string_view>
 (desde C++17)
Definido en el encabezado <unordered_map>
Definido en el encabezado <unordered_set>
Definido en el encabezado <valarray>
template< class C >
auto rbegin( C& c ) noexcept(noexcept(c.rbegin()))
    -> decltype(c.rbegin());
(desde C++14) (constexpr desde C++17)
(2)
template< class C >
auto rbegin( const C& c ) noexcept(noexcept(c.rbegin()))
    -> decltype(c.rbegin());
(desde C++14) (constexpr desde C++17)
(3)
template< class T, std::size_t N >
std::reverse_iterator<T*> rbegin( T (&array)[N] ) noexcept;
(desde C++14) (constexpr desde C++17)
(4)
template< class T >
std::reverse_iterator<const T*> rbegin( std::initializer_list<T> il ) noexcept;
(desde C++14) (constexpr desde C++17)
(5)
template< class C >
auto crbegin( const C& c ) noexcept(noexcept(std::rbegin(c)))
    -> decltype(std::rbegin(c));
(desde C++14) (constexpr desde C++17)
Devuelve un iterador al inicio inverso del rango dado.

1,2)

Devuelve , que es típicamente un iterador al inicio inverso de la secuencia representada por c.rbegin().c1)
Si es un CContenedor estándar, devuelve un objeto .C::reverse_iterator2)
Si es un CContenedor estándar, devuelve un objeto .C::const_reverse_iterator3)
Devuelve un objeto al inicio inverso de std::reverse_iterator<T*>.array4)
Devuelve un objeto al inicio inverso de std::reverse_iterator<const T*>.il5)
Devuelve , con std::rbegin(c) siempre tratado como calificado const.c Si
es un CContenedor estándar, devuelve un objeto .C::const_reverse_iterator

Parámetros

c - un contenedor o vista con una función miembro rbegin
array - un array de tipo arbitrario
il - un std:: initializer_list

Valor de retorno

1,2) c. rbegin ( )
3) std:: reverse_iterator < T * > ( array + N )
4) std:: reverse_iterator < const T * > ( il. end ( ) )
5) c. rbegin ( )

Excepciones

Puede lanzar excepciones definidas por la implementación.

Sobrecargas

Sobrecargas personalizadas de rbegin pueden proporcionarse para clases y enumeraciones que no exponen una función miembro rbegin() adecuada, pero que pueden ser iteradas.

Las sobrecargas de rbegin encontradas mediante búsqueda dependiente de argumento pueden utilizarse para personalizar el comportamiento de std :: ranges:: rbegin y std::ranges::crbegin .

(desde C++20)

Notas

La sobrecarga para std::initializer_list es necesaria porque no tiene una función miembro rbegin .

Ejemplo

#include <iostream>
#include <iterator>
#include <vector>
int main()
{
    std::vector<int> v = {3, 1, 4};
    auto vi = std::rbegin(v); // el tipo de "vi" es std::vector<int>::reverse_iterator
    std::cout << "*vi = " << *vi << '\n';
    *std::rbegin(v) = 42; // OK: después de la asignación v[2] == 42
//  *std::crbegin(v) = 13; // error: la ubicación es de solo lectura
    int a[] = {-5, 10, 15};
    auto ai = std::rbegin(a); // el tipo de "ai" es std::reverse_iterator<int*>
    std::cout << "*ai = " << *ai << '\n';
    auto il = {3, 1, 4};
    // el tipo de "it" a continuación es std::reverse_iterator<int const*>:
    for (auto it = std::rbegin(il); it != std::rend(il); ++it)
        std::cout << *it << ' ';
    std::cout << '\n';
}

Salida:

*vi = 4
*ai = 15
4 1 3

Informes de defectos

Los siguientes informes de defectos que cambian el comportamiento se aplicaron retroactivamente a los estándares C++ publicados anteriormente.

DR Aplicado a Comportamiento según publicación Comportamiento correcto
LWG 3537 C++14 std::rbegin y std::crbegin no se requería que propagaran la especificación de excepciones requerido

Véase también

(C++11) (C++14)
devuelve un iterador al inicio de un contenedor o arreglo
(plantilla de función)
(C++11) (C++14)
devuelve un iterador al final de un contenedor o arreglo
(plantilla de función)
(C++14)
devuelve un iterador inverso al final para un contenedor o arreglo
(plantilla de función)
devuelve un iterador inverso a un rango
(objeto de punto de personalización)
devuelve un iterador inverso a un rango de solo lectura
(objeto de punto de personalización)