Namensräume
Varianten
Aktionen

std::rbegin, std::crbegin

Von cppreference.com
< cpp‎ | iterator
 
 
Iterator-Bibliothek
Iterator-Konzepte
Iterator-Primitive
Algorithmus-Konzepte und Hilfsprogramme
Indirekte aufrufbare Konzepte
Gemeinsame Algorithmus-Anforderungen
(C++20)
(C++20)
(C++20)
Dienstprogramme
(C++20)
Iterator-Adapter
Bereichszugriff
(C++11)(C++14)
rbegincrbegin
(C++14)(C++14)  
(C++11)(C++14)
(C++14)(C++14)  
(C++17)(C++20)
(C++17)
(C++17)
 
Definiert in der Header-Datei <array>
Definiert in Header <deque>
Definiert in Header <flat_map>
Definiert in Header <flat_set>
Definiert in Header <forward_list>
Definiert in Header <inplace_vector>
Definiert in Header <iterator>
Definiert in Header <list>
Definiert in Header <map>
Definiert in Header <regex>
Definiert in Header <set>
Definiert in Header <span>
Definiert in Header <string>
Definiert in Header <string_view>
Definiert in Header <unordered_map>
Definiert in Header <unordered_set>
Definiert in Header <vector>
template< class C >
auto rbegin( C& c ) -> decltype(c.rbegin());
(1) (seit C++14)
(constexpr seit C++17)
template< class C >
auto rbegin( const C& c ) -> decltype(c.rbegin());
(2) (seit C++14)
(constexpr seit C++17)
template< class T, std::size_t N >
std::reverse_iterator<T*> rbegin( T (&array)[N] );
(3) (seit C++14)
(constexpr seit C++17)
template< class T >
std::reverse_iterator<const T*> rbegin( std::initializer_list<T> il );
(4) (seit C++14)
(constexpr seit C++17)
template< class C >
auto crbegin( const C& c ) -> decltype(std::rbegin(c));
(5) (seit C++14)
(constexpr seit C++17)

Gibt einen Iterator zum Rückwärtsanfang des gegebenen Bereichs zurück.

1,2) Gibt c.rbegin() zurück, was typischerweise ein Iterator zum Rückwärtsanfang der von c dargestellten Sequenz ist.
1) Wenn C ein Standard-Container ist, wird ein C::reverse_iterator-Objekt zurückgegeben.
2) Wenn C ein Standard-Container ist, wird ein C::const_reverse_iterator-Objekt zurückgegeben.
3) Gibt ein std::reverse_iterator<T*>-Objekt zum Rückwärtsanfang von array zurück.
4) Gibt ein std::reverse_iterator<const T*>-Objekt zum Rückwärtsanfang von il zurück.
5) Gibt std::rbegin(c) zurück, wobei c immer als const-qualifiziert behandelt wird.
Wenn C ein Standard-Container ist, wird ein C::const_reverse_iterator-Objekt zurückgegeben.

range-rbegin-rend.svg

Inhalt

[edit] Parameter

c - Ein Container oder eine Ansicht mit einer Memberfunktion rbegin
array - Ein Array beliebigen Typs
il - Eine std::initializer_list

[edit] Rückgabewert

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

[edit] Exceptions

Kann implementierungsdefinierte Ausnahmen auslösen.

[edit] Überladungen

Benutzerdefinierte Überladungen von rbegin können für Klassen und Enumerationen bereitgestellt werden, die keine geeignete Memberfunktion rbegin() bereitstellen, aber iterierbar sind.

Überladungen von rbegin, die durch argumentabhängige Suche gefunden werden, können verwendet werden, um das Verhalten von std::ranges::rbegin und std::ranges::crbegin anzupassen.

(seit C++20)

[edit] Hinweise

Die Überladung für std::initializer_list ist notwendig, da sie keine Memberfunktion rbegin besitzt.

[edit] Beispiel

#include <iostream>
#include <iterator>
#include <vector>
 
int main()
{
    std::vector<int> v = {3, 1, 4};
    auto vi = std::rbegin(v); // the type of “vi” is std::vector<int>::reverse_iterator
    std::cout << "*vi = " << *vi << '\n';
 
    *std::rbegin(v) = 42; // OK: after assignment v[2] == 42
//  *std::crbegin(v) = 13; // error: the location is read-only
 
    int a[] = {-5, 10, 15};
    auto ai = std::rbegin(a); // the type of “ai” is std::reverse_iterator<int*>
    std::cout << "*ai = " << *ai << '\n';
 
    auto il = {3, 1, 4};
    // the type of “it” below is std::reverse_iterator<int const*>:
    for (auto it = std::rbegin(il); it != std::rend(il); ++it)
        std::cout << *it << ' ';
    std::cout << '\n';
}

Ausgabe

*vi = 4
*ai = 15
4 1 3

[edit] Siehe auch

(C++11)(C++14)
gibt einen Iterator zum Anfang eines Containers oder Arrays zurück
(Funktionsvorlage) [bearbeiten]
(C++11)(C++14)
gibt einen Iterator zum Ende eines Containers oder Arrays zurück
(Funktionsvorlage) [bearbeiten]
(C++14)
gibt einen Reverse-End-Iterator für einen Container oder ein Array zurück
(function template) [bearbeiten]
gibt einen Reverse-Iterator zu einem Range zurück
(Customization Point Objekt)[edit]
gibt einen Reverse-Iterator zu einem schreibgeschützten Range zurück
(Customization Point Objekt)[edit]