Namensräume
Varianten
Aktionen

std::rend, std::crend

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)
(C++14)(C++14)  
(C++11)(C++14)
rendcrend
(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 rend( C& c ) -> decltype(c.rend());
(1) (seit C++14)
(constexpr seit C++17)
template< class C >
auto rend( const C& c ) -> decltype(c.rend());
(2) (seit C++14)
(constexpr seit C++17)
template< class T, std::size_t N >
std::reverse_iterator<T*> rend( T (&array)[N] );
(3) (seit C++14)
(constexpr seit C++17)
template< class T >
std::reverse_iterator<const T*> rend( std::initializer_list<T> il );
(4) (seit C++14)
(constexpr seit C++17)
template< class C >
auto crend( const C& c ) -> decltype(std::rend(c));
(5) (seit C++14)
(constexpr seit C++17)

Gibt einen Iterator zum Reverse-Ende des angegebenen Bereichs zurück.

1,2) Gibt c.rend() zurück, was typischerweise ein Iterator ist, der eine Position hinter dem Reverse-Ende der von c repräsentierten Sequenz liegt.
1) Wenn C ein Standard-Container ist, gibt ein C::reverse_iterator-Objekt zurück.
2) Wenn C ein Standard-Container ist, gibt ein C::const_reverse_iterator-Objekt zurück.
3) Gibt ein std::reverse_iterator<T*>-Objekt zum Reverse-Ende von array zurück.
4) Gibt ein std::reverse_iterator<const T*>-Objekt zum Reverse-Ende von il zurück.
5) Gibt std::end(c) zurück, wobei c immer als const-qualifiziert behandelt wird.
Wenn C ein Standard-Container ist, gibt ein C::const_reverse_iterator-Objekt zurück.

range-rbegin-rend.svg

Inhalt

[edit] Parameter

c - ein Container oder eine View mit einer rend-Memberfunktion
array - Ein Array beliebigen Typs
il - eine std::initializer_list

[edit] Rückgabewert

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

[edit] Exceptions

Kann implementierungsdefinierte Ausnahmen auslösen.

[edit] Überladungen

Benutzerdefinierte Überladungen von rend können für Klassen und Aufzählungen bereitgestellt werden, die keine geeignete rend()-Memberfunktion bereitstellen, aber dennoch iterierbar sind.

Überladungen von rend, die durch argumentabhängige Suche (ADL) gefunden werden, können verwendet werden, um das Verhalten von std::ranges::rend und std::ranges::crend anzupassen.

(seit C++20)

[edit] Hinweise

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

[edit] Beispiel

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

Ausgabe

C-style array `a` backwards: 10 9 -3 6 4
std::initializer_list `il` backwards: 4 1 3
std::vector `v` backwards: 10 9 -3 6 4

[edit] Siehe auch

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