Namespaces
Variants

std::rend, std::crend

Von de.cppreference.net
 
 
Iteratoren-Bibliothek
Iterator-Konzepte
Iterator-Primitive
Algorithmus-Konzepte und Hilfsmittel
Indirekt aufrufbare Konzepte
Allgemeine Algorithmusanforderungen
(C++20)
(C++20)
(C++20)
Hilfsmittel
(C++20)
Iterator-Adaptoren
Bereichszugriff
(C++11)(C++14)
(C++14)(C++14)  
(C++11)(C++14)
(C++14)(C++14)  
(C++17)(C++20)
(C++17)
(C++17)
 
Definiert in Header <array>
Definiert in Header <deque>
Definiert in Header <flat_map>
 (seit C++23)
Definiert in Header <flat_set>
 (seit C++23)
Definiert in Header <forward_list>
Definiert in Header <inplace_vector>
 (seit C++26)
Definiert in Header <iterator>
Definiert in Header <list>
Definiert in Header <map>
Definiert in Header <optional>
 (seit C++26)
Definiert in Header <regex>
Definiert in Header <set>
Definiert in Header <span>
 (seit C++20)
Definiert in Header <stacktrace>
 (seit C++23)
Definiert in Header <string>
Definiert in Header <string_view>
 (seit C++17)
Definiert in Header <unordered_map>
Definiert in Header <unordered_set>
Definiert in Header <valarray>
Definiert in Header <vector>
template< class C >
auto rend( C& c ) noexcept(noexcept(c.rend()))
    -> decltype(c.rend());
(1) (seit C++14)
(constexpr seit C++17)
template< class C >
auto rend( const C& c ) noexcept(noexcept(c.rend()))
    -> 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] ) noexcept;
(3) (seit C++14)
(constexpr seit C++17)
template< class T >
std::reverse_iterator<const T*> rend( std::initializer_list<T> il ) noexcept;
(4) (seit C++14)
(constexpr seit C++17)
template< class C >
auto crend( const C& c ) noexcept(noexcept(std::rend(c)))
    -> decltype(std::rend(c));
(5) (seit C++14)
(constexpr seit C++17)

Gibt einen Iterator auf das reverse-Ende des angegebenen Bereichs zurück.

1,2) Gibt c.rend() zurück, das typischerweise ein Iterator eine Position hinter dem reverse-Ende der durch 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 auf das reverse-Ende von array zurück.
4) Gibt ein std::reverse_iterator<const T*>-Objekt auf das 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, wird ein C::const_reverse_iterator-Objekt zurückgegeben.

Parameter

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

Rückgabewert

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

Exceptions

Kann implementierungsdefinierte Ausnahmen auslösen.

Überladungen

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

Durch argumentabhängige Namenssuche gefundene Überladungen von rend können verwendet werden, um das Verhalten von std :: ranges:: rend und std::ranges::crend anzupassen.

(since C++20)

Hinweise

Die Überladung für std::initializer_list ist notwendig, da sie keine Member-Funktion rend besitzt.

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

Fehlermeldungen

Die folgenden verhaltensändernden Fehlermeldungen wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.

DR Angewendet auf Verhalten wie veröffentlicht Korrektes Verhalten
LWG 3537 C++14 std::rend und std::crendwaren nicht verpflichtet, die Ausnahmespezifikation weiterzugeben erforderlich

Siehe auch

(C++11) (C++14)
gibt einen Iterator zum Ende eines Containers oder Arrays zurück
(Funktions-Template)
gibt einen Reverse-Iterator zum Anfang eines Containers oder Arrays zurück
(Funktions-Template)
(C++11) (C++14)
gibt einen Iterator zum Anfang eines Containers oder Arrays zurück
(Funktions-Template)
gibt einen Reverse-End-Iterator für einen Bereich zurück
(Customization Point Object)
gibt einen Reverse-End-Iterator für einen schreibgeschützten Bereich zurück
(Customization Point Object)