std::ranges::crend
| Défini dans l'en-tête <ranges>
|
||
| Défini dans l'en-tête <iterator>
|
||
inline namespace /* unspecified */ {
inline constexpr /* unspecified */ crend = /* unspecified */;
}
|
(depuis C++20) (objet point de personnalisation) |
|
| Signature d'appel |
||
template< class T >
requires /* see below */
constexpr /* see below */ auto crend( T&& t );
|
(depuis C++20) | |
Retourne une sentinelle pour l'itérateur constant(depuis C++23) indiquant la fin d'un range qualifié const(jusqu'à C++23) traité comme une séquence inversée.
|
Soit
Un appel à |
(jusqu'à C++23) |
|
Si l'argument est une lvalue ou
Dans tous les autres cas, un appel à |
(depuis C++23) |
Si ranges::crend(e) est valide pour une expression e, où decltype((e)) est T, alors CT modélise std::ranges::range, et(jusqu'à C++23) std::sentinel_for<S, I> est true dans tous les cas, où S est decltype(ranges::crend(e)), et I est decltype(ranges::crbegin(e)). De plus, S modélise constant-iterator s'il modélise input_iterator.(depuis C++23)
Objets de point de personnalisation
Le nom
ranges::crend
désigne un
objet de point de personnalisation
, qui est un objet fonction const de type classe
littérale
semiregular
. Voir
CustomizationPointObject
pour plus de détails.
Exemple
#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'; }
Sortie :
Array backwards: 10 9 -3 6 4 Vector backwards: 10 9 -3 6 4
Voir aussi
|
(C++20)
|
retourne un itérateur de fin inverse pour une plage
(objet de point de personnalisation) |
|
(C++14)
|
retourne un itérateur de fin inverse pour un conteneur ou un tableau
(modèle de fonction) |