Namespaces
Variants

std::rend, std::crend

De fr.cppreference.net
 
 
Bibliothèque d'itérateurs
Concepts d'itérateur
Primitives d'itérateur
Concepts et utilitaires d'algorithme
Concepts d'appelable indirect
Exigences communes d'algorithme
(C++20)
(C++20)
(C++20)
Utilitaires
(C++20)
Adaptateurs d'itérateur
Accès aux plages
(C++11)(C++14)
(C++14)(C++14)  
(C++11)(C++14)
(C++14)(C++14)  
(C++17)(C++20)
(C++17)
(C++17)
 
Défini dans l'en-tête <array>
Défini dans l'en-tête <deque>
Défini dans l'en-tête <flat_map>
 (depuis C++23)
Défini dans l'en-tête <flat_set>
 (depuis C++23)
Défini dans l'en-tête <forward_list>
Défini dans l'en-tête <inplace_vector>
 (depuis C++26)
Défini dans l'en-tête <iterator>
Défini dans l'en-tête <list>
Défini dans l'en-tête <map>
Défini dans l'en-tête <optional>
 (depuis C++26)
Défini dans l'en-tête <regex>
Défini dans l'en-tête <set>
Défini dans l'en-tête <span>
 (depuis C++20)
Défini dans l'en-tête <stacktrace>
 (depuis C++23)
Défini dans l'en-tête <string>
Défini dans l'en-tête <string_view>
 (depuis C++17)
Défini dans l'en-tête <unordered_map>
Défini dans l'en-tête <unordered_set>
Défini dans l'en-tête <valarray>
Défini dans l'en-tête <vector>
template< class C >
auto rend( C& c ) noexcept(noexcept(c.rend()))
    -> decltype(c.rend());
(1) (depuis C++14)
(constexpr depuis C++17)
template< class C >
auto rend( const C& c ) noexcept(noexcept(c.rend()))
    -> decltype(c.rend());
(2) (depuis C++14)
(constexpr depuis C++17)
template< class T, std::size_t N >
std::reverse_iterator<T*> rend( T (&array)[N] ) noexcept;
(3) (depuis C++14)
(constexpr depuis C++17)
template< class T >
std::reverse_iterator<const T*> rend( std::initializer_list<T> il ) noexcept;
(4) (depuis C++14)
(constexpr depuis C++17)
template< class C >
auto crend( const C& c ) noexcept(noexcept(std::rend(c)))
    -> decltype(std::rend(c));
(5) (depuis C++14)
(constexpr depuis C++17)

Retourne un itérateur vers la fin inverse de la plage donnée.

1,2) Retourne c.rend(), qui est généralement un itérateur pointant après la fin inverse de la séquence représentée par c.
1) Si C est un conteneur standard, retourne un objet C::reverse_iterator.
2) Si C est un conteneur standard, retourne un objet C::const_reverse_iterator.
3) Retourne un objet std::reverse_iterator<T*> vers la fin inverse de array.
4) Retourne un objet std::reverse_iterator<const T*> vers la fin inverse de il.
5) Retourne std::end(c), avec c toujours traité comme qualifié const.
Si C est un conteneur standard, retourne un objet C::const_reverse_iterator.

Paramètres

c - un conteneur ou une vue avec une fonction membre rend
array - un tableau de type arbitraire
il - un std:: initializer_list

Valeur de retour

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

Exceptions

Peut lever des exceptions définies par l'implémentation.

Surcharges

Des surcharges personnalisées de rend peuvent être fournies pour les classes et les énumérations qui n'exposent pas de fonction membre rend() appropriée, mais qui peuvent être itérées.

Les surcharges de rend trouvées par la recherche dépendante des arguments peuvent être utilisées pour personnaliser le comportement de std :: ranges:: rend et std::ranges::crend .

(depuis C++20)

Notes

La surcharge pour std::initializer_list est nécessaire car elle ne possède pas de fonction membre rend .

Exemple

#include <algorithm>
#include <iostream>
#include <iterator>
#include <vector>
int main()
{
    int a[]{4, 6, -3, 9, 10};
    std::cout << "Tableau style C `a` en sens inverse : ";
    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` en sens inverse : ";
    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` en sens inverse : ";
    std::copy(std::rbegin(v), std::rend(v), std::ostream_iterator<int>(std::cout, " "));
    std::cout << '\n';
}

Sortie :

Tableau style C `a` en sens inverse : 10 9 -3 6 4
std::initializer_list `il` en sens inverse : 4 1 3
std::vector `v` en sens inverse : 10 9 -3 6 4

Rapports de défauts

Les rapports de défauts suivants modifiant le comportement ont été appliqués rétroactivement aux normes C++ précédemment publiées.

RD Appliqué à Comportement tel que publié Comportement correct
LWG 3537 C++14 std::rend et std::crend n'étaient pas obligés de propager la spécification d'exception obligatoire

Voir aussi

(C++11) (C++14)
retourne un itérateur vers la fin d'un conteneur ou d'un tableau
(fonction template)
retourne un itérateur inverse vers le début d'un conteneur ou d'un tableau
(fonction template)
(C++11) (C++14)
retourne un itérateur vers le début d'un conteneur ou d'un tableau
(fonction template)
retourne un itérateur inverse de fin vers une plage
(objet point de personnalisation)
retourne un itérateur inverse de fin vers une plage en lecture seule
(objet point de personnalisation)