Namespaces
Variants

std::rbegin, std::crbegin

De fr.cppreference.net
 
 
Bibliothèque d'itérateurs
Concepts d'itérateurs
Primitives d'itérateur
Concepts et utilitaires d'algorithmes
Concepts d'appel indirect
Exigences communes des algorithmes
(C++20)
(C++20)
(C++20)
Utilitaires
(C++20)
Adaptateurs d'itérateurs
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 rbegin( C& c ) noexcept(noexcept(c.rbegin()))
    -> decltype(c.rbegin());
(1) (depuis C++14)
(constexpr depuis C++17)
template< class C >
auto rbegin( const C& c ) noexcept(noexcept(c.rbegin()))
    -> decltype(c.rbegin());
(2) (depuis C++14)
(constexpr depuis C++17)
template< class T, std::size_t N >
std::reverse_iterator<T*> rbegin( T (&array)[N] ) noexcept;
(3) (depuis C++14)
(constexpr depuis C++17)
template< class T >
std::reverse_iterator<const T*> rbegin( std::initializer_list<T> il ) noexcept;
(4) (depuis C++14)
(constexpr depuis C++17)
template< class C >
auto crbegin( const C& c ) noexcept(noexcept(std::rbegin(c)))
    -> decltype(std::rbegin(c));
(5) (depuis C++14)
(constexpr depuis C++17)

Renvoie un itérateur au début inversé de la plage donnée.

1,2) Renvoie c.rbegin(), qui est généralement un itérateur au début inversé de la séquence représentée par c.
1) Si C est un conteneur standard, renvoie un objet C::reverse_iterator.
2) Si C est un conteneur standard, renvoie un objet C::const_reverse_iterator.
3) Renvoie un objet std::reverse_iterator<T*> au début inversé de array.
4) Renvoie un objet std::reverse_iterator<const T*> au début inversé de il.
5) Renvoie std::rbegin(c), où c est toujours traité comme qualifié const.
Si C est un conteneur standard, renvoie un objet C::const_reverse_iterator.

Paramètres

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

Valeur de retour

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

Exceptions

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

Surcharges

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

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

(depuis C++20)

Notes

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

Exemple

#include <iostream>
#include <iterator>
#include <vector>
int main()
{
    std::vector<int> v = {3, 1, 4};
    auto vi = std::rbegin(v); // le type de "vi" est std::vector<int>::reverse_iterator
    std::cout << "*vi = " << *vi << '\n';
    *std::rbegin(v) = 42; // OK : après l'affectation v[2] == 42
//  *std::crbegin(v) = 13; // erreur : l'emplacement est en lecture seule
    int a[] = {-5, 10, 15};
    auto ai = std::rbegin(a); // le type de "ai" est std::reverse_iterator<int*>
    std::cout << "*ai = " << *ai << '\n';
    auto il = {3, 1, 4};
    // le type de "it" ci-dessous est std::reverse_iterator<int const*> :
    for (auto it = std::rbegin(il); it != std::rend(il); ++it)
        std::cout << *it << ' ';
    std::cout << '\n';
}

Sortie :

*vi = 4
*ai = 15
4 1 3

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.

DR Appliqué à Comportement tel que publié Comportement correct
LWG 3537 C++14 std::rbegin et std::crbegin n'étaient pas tenus de propager la spécification d'exception exigé

Voir aussi

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