Namespaces
Variants

std::rend, std::crend

De es.cppreference.net
 
 
Biblioteca de iteradores
Conceptos de iterador
Primitivas de iterador
Conceptos y utilidades de algoritmos
Conceptos invocables indirectos
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>
Definido en el encabezado <vector>
template< class C >
auto rend( C& c ) noexcept(noexcept(c.rend()))
    -> decltype(c.rend());
(1) (desde C++14)
(constexpr desde C++17)
template< class C >
auto rend( const C& c ) noexcept(noexcept(c.rend()))
    -> decltype(c.rend());
(2) (desde C++14)
(constexpr desde C++17)
template< class T, std::size_t N >
std::reverse_iterator<T*> rend( T (&array)[N] ) noexcept;
(3) (desde C++14)
(constexpr desde C++17)
template< class T >
std::reverse_iterator<const T*> rend( std::initializer_list<T> il ) noexcept;
(4) (desde C++14)
(constexpr desde C++17)
template< class C >
auto crend( const C& c ) noexcept(noexcept(std::rend(c)))
    -> decltype(std::rend(c));
(5) (desde C++14)
(constexpr desde C++17)

Devuelve un iterador al final inverso del rango dado.

1,2) Devuelve c.rend(), que es típicamente un iterador una posición más allá del final inverso de la secuencia representada por c.
1) Si C es un Container estándar, devuelve un objeto C::reverse_iterator.
2) Si C es un Container estándar, devuelve un objeto C::const_reverse_iterator.
3) Devuelve un objeto std::reverse_iterator<T*> al final inverso de array.
4) Devuelve un objeto std::reverse_iterator<const T*> al final inverso de il.
5) Devuelve std::end(c), con c siempre tratado como calificado const.
Si C es un Container estándar, devuelve un objeto C::const_reverse_iterator.

Parámetros

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

Valor de retorno

1,2) c. rend ( )
3) std:: reverse_iterator < T * > ( array )
4) std:: reverse_iterator < const T * > ( il. begin ( ) )
5) c. rend ( )

Excepciones

Puede lanzar excepciones definidas por la implementación.

Sobrecargas

Se pueden proporcionar sobrecargas personalizadas de rend para clases y enumeraciones que no exponen una función miembro rend() adecuada, pero que pueden ser iteradas.

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

(desde C++20)

Notas

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

Ejemplo

#include <algorithm>
#include <iostream>
#include <iterator>
#include <vector>
int main()
{
    int a[]{4, 6, -3, 9, 10};
    std::cout << "Array estilo C `a` al revés: ";
    std::copy(std::rbegin(a), std::rend(a), std::ostream_iterator<int>(std::cout, " "));
    auto il = {3, 1, 4};
    std::cout << "\nstd::initializer_list `il` al revés: ";
    std::copy(std::rbegin(il), std::rend(il), std::ostream_iterator<int>(std::cout, " "));
    std::vector<int> v{4, 6, -3, 9, 10};
    std::cout << "\nstd::vector `v` al revés: ";
    std::copy(std::rbegin(v), std::rend(v), std::ostream_iterator<int>(std::cout, " "));
    std::cout << '\n';
}

Salida:

Array estilo C `a` al revés: 10 9 -3 6 4
std::initializer_list `il` al revés: 4 1 3
std::vector `v` al revés: 10 9 -3 6 4

Informes de defectos

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

DR Aplicado a Comportamiento según lo publicado Comportamiento correcto
LWG 3537 C++14 std::rend y std::crend no estaban obligados a propagar la especificación de excepciones requerido

Véase también

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