std::ranges::crend
| Definido en el encabezado <ranges>
|
||
| Definido en el encabezado <iterator>
|
||
inline namespace /* unspecified */ {
inline constexpr /* unspecified */ crend = /* unspecified */;
}
|
(desde C++20) (objeto de punto de personalización) |
|
| Firma de llamada |
||
template< class T >
requires /* see below */
constexpr /* see below */ auto crend( T&& t );
|
(desde C++20) | |
Devuelve un sentinel para el iterador constante(desde C++23) indicando el final de un const-qualified(hasta C++23) rango que se trata como una secuencia invertida.
|
Sea
Una llamada a |
(hasta C++23) |
|
Si el argumento es un lvalue o
En todos los demás casos, una llamada a |
(desde C++23) |
Si ranges::crend(e) es válido para una expresión e, donde decltype((e)) es T, entonces CT models std::ranges::range, y(hasta C++23) std::sentinel_for<S, I> es true en todos los casos, donde S es decltype(ranges::crend(e)), y I es decltype(ranges::crbegin(e)). Además, S models constant-iterator si models input_iterator.(desde C++23)
Objetos de punto de personalización
El nombre
ranges::crend
denota un
objeto de punto de personalización
, que es un
objeto función
constante de un tipo de clase
literal
semiregular
. Consulte
CustomizationPointObject
para más detalles.
Ejemplo
#include <algorithm> #include <iostream> #include <iterator> #include <vector> int main() { int a[]{4, 6, -3, 9, 10}; std::cout << "Array backwards: "; namespace ranges = std::ranges; ranges::copy(ranges::rbegin(a), ranges::rend(a), std::ostream_iterator<int>(std::cout, " ")); std::cout << '\n'; std::cout << "Vector backwards: "; std::vector v{4, 6, -3, 9, 10}; ranges::copy(ranges::rbegin(v), ranges::rend(v), std::ostream_iterator<int>(std::cout, " ")); std::cout << '\n'; }
Salida:
Array backwards: 10 9 -3 6 4 Vector backwards: 10 9 -3 6 4
Véase también
|
(C++20)
|
devuelve un iterador inverso final para un rango
(objeto de punto de personalización) |
|
(C++14)
|
devuelve un iterador inverso final para un contenedor o array
(plantilla de función) |