std::ranges:: views:: reverse, std::ranges:: reverse_view
|
Definiert im Header
<ranges>
|
||
|
template
<
ranges::
view
V
>
requires
ranges::
bidirectional_range
<
V
>
|
(1) | (seit C++20) |
|
namespace
views
{
inline
constexpr
/* nicht spezifiziert */
reverse
=
/* nicht spezifiziert */
;
|
(2) | (seit C++20) |
|
Aufrufsignatur
|
||
|
template
<
ranges::
viewable_range
R
>
requires
/* siehe unten */
|
(seit C++20) | |
view
in umgekehrter Reihenfolge darstellt.
-
e.
base
(
)
, falls der Typ von
eeine (möglicherweise cv-qualifizierte) Spezialisierung vonreverse_viewist; -
andernfalls, falls der Typ von
e
(möglicherweise cv-qualifiziert)
ranges::
subrange
<
std::
reverse_iterator
<
I
>
,
std::
reverse_iterator
<
I
>
, K
>
für einen Iteratortyp
Iund einen WertKvom Typranges::subrange_kindist:
-
-
ranges::
subrange
<
I, I, K
>
(
e.
end
(
)
.
base
(
)
, e.
begin
(
)
.
base
(
)
, e.
size
(
)
)
, falls
Kgleichranges::subrange_kind::sizedist; - andernfalls ranges:: subrange < I, I, K > ( e. end ( ) . base ( ) , e. begin ( ) . base ( ) ) ;
-
ranges::
subrange
<
I, I, K
>
(
e.
end
(
)
.
base
(
)
, e.
begin
(
)
.
base
(
)
, e.
size
(
)
)
, falls
- andernfalls ranges :: reverse_view { e } .
views::reverse
entpackt umgekehrte Views, wenn möglich.
Ein
reverse_view
modelliert stets
bidirectional_range
und
common_range
, und es modelliert
borrowed_range
,
sized_range
oder
random_access_range
, wenn der zugrundeliegende View-Typ
V
das entsprechende Konzept modelliert.
Inhaltsverzeichnis |
Datenmitglieder
| Member | Beschreibung |
V
base_
(private)
|
die zugrundeliegende View
( exposition-only member object* ) |
non-propagating-cache
<
ranges::
iterator_t
<
V
>>
cached_end_
(private)
(nur vorhanden, wenn
V
nicht
common_range
erfüllt)
|
ein Objekt, das das Ergebnis von Aufrufen an
begin()
zwischenspeichert
( exposition-only member object* ) |
Memberfunktionen
Konstruiert eine
reverse_view
(Öffentliche Elementfunktion) |
|
Gibt die zugrundeliegende Ansicht
V
zurück
(Öffentliche Elementfunktion) |
|
Gibt den Beginn-Iterator der
reverse_view
zurück
(Öffentliche Elementfunktion) |
|
Gibt den Ende-Iterator der
reverse_view
zurück
(Öffentliche Elementfunktion) |
|
|
Gibt die Größe der Ansicht zurück, falls sie begrenzt ist
(Öffentliche Elementfunktion) |
|
|
(C++26)
|
Gibt die ungefähre Größe des zugrundeliegenden
approximately_sized_range
zurück
(Öffentliche Elementfunktion) |
Geerbt von std::ranges::view_interface |
|
Gibt zurück, ob die abgeleitete Ansicht leer ist, bereitgestellt nur wenn sie
sized_range
oder
forward_range
erfüllt
(Öffentliche Elementfunktion von
std::ranges::view_interface<D>
)
|
|
|
(C++23)
|
Gibt einen konstanten Iterator zum Beginn des Bereichs zurück
(Öffentliche Elementfunktion von
std::ranges::view_interface<D>
)
|
|
(C++23)
|
Gibt einen Sentinel für den konstanten Iterator des Bereichs zurück
(Öffentliche Elementfunktion von
std::ranges::view_interface<D>
)
|
|
Gibt zurück, ob die abgeleitete Ansicht nicht leer ist, bereitgestellt nur wenn
ranges::empty
darauf anwendbar ist
(Öffentliche Elementfunktion von
std::ranges::view_interface<D>
)
|
|
Gibt das erste Element in der abgeleiteten Ansicht zurück, bereitgestellt wenn sie
forward_range
erfüllt
(Öffentliche Elementfunktion von
std::ranges::view_interface<D>
)
|
|
Gibt das letzte Element in der abgeleiteten Ansicht zurück, bereitgestellt nur wenn sie
bidirectional_range
und
common_range
erfüllt
(Öffentliche Elementfunktion von
std::ranges::view_interface<D>
)
|
|
Gibt das
n
te
Element in der abgeleiteten Ansicht zurück, bereitgestellt nur wenn sie
random_access_range
erfüllt
(Öffentliche Elementfunktion von
std::ranges::view_interface<D>
)
|
|
std::ranges::reverse_view:: reverse_view
|
reverse_view
(
)
requires
std::
default_initializable
<
V
>
=
default
;
|
(1) | (seit C++20) |
|
constexpr
reverse_view
(
V r
)
;
|
(2) | (seit C++20) |
Parameter
| r | - | umzukehrender Bereich |
std::ranges::reverse_view:: base
|
constexpr
V base
(
)
const
&
requires
std::
copy_constructible
<
V
>
;
|
(1) | (seit C++20) |
|
constexpr
V base
(
)
&&
;
|
(2) | (seit C++20) |
Gibt die zugrundeliegende Ansicht zurück.
base_
;
.
base_
)
;
.
std::ranges::reverse_view:: begin
|
constexpr
std::
reverse_iterator
<
ranges::
iterator_t
<
V
>>
begin
(
)
;
|
(1) | (seit C++20) |
|
constexpr
std::
reverse_iterator
<
ranges::
iterator_t
<
V
>>
begin
(
)
requires ranges:: common_range < V > ; |
(2) | (seit C++20) |
|
constexpr
auto
begin
(
)
const
requires
ranges::
common_range
<
const
V
>
;
|
(3) | (seit C++20) |
base_
)
,
ranges::
end
(
base_
)
)
)
zurück.
range
-Konzept geforderte amortisierte konstante Zeitkomplexität bereitzustellen, speichert diese Funktion das Ergebnis im Cache-Objekt für nachfolgende Aufrufe.
base_
)
)
;
.
std::ranges::reverse_view:: end
|
constexpr
std::
reverse_iterator
<
ranges::
iterator_t
<
V
>>
end
(
)
;
|
(1) | (seit C++20) |
|
constexpr
auto
end
(
)
const
requires
ranges::
common_range
<
const
V
>
;
|
(2) | (seit C++20) |
Entspricht
return
std::
make_reverse_iterator
(
ranges::
begin
(
base_
)
)
;
.
std::ranges::reverse_view:: size
|
constexpr
auto
size
(
)
requires
ranges::
sized_range
<
V
>
;
|
(1) | (seit C++20) |
|
constexpr
auto
size
(
)
const
requires
ranges::
sized_range
<
const
V
>
;
|
(2) | (seit C++20) |
Gibt die Größe der View zurück, falls die View begrenzt ist. Entspricht
return
ranges::
size
(
base_
)
;
.
std::ranges::as_rvalue_view:: reserve_hint
|
constexpr
auto
reserve_hint
(
)
requires ranges :: approximately_sized_range < V > ; |
(1) | (seit C++26) |
|
constexpr
auto
reserve_hint
(
)
const
requires ranges :: approximately_sized_range < const V > ; |
(2) | (seit C++26) |
Gibt
ranges
::
reserve_hint
(
base_
)
zurück.
Deduktionsanleitungen
|
template
<
class
R
>
reverse_view ( R && ) - > reverse_view < views:: all_t < R >> ; |
(seit C++20) | |
Hilfsvorlagen
|
template
<
class
T
>
constexpr
bool
enable_borrowed_range
<
std
::
ranges
::
reverse_view
<
T
>>
=
|
(seit C++20) | |
Diese Spezialisierung von
std::ranges::enable_borrowed_range
bewirkt, dass
reverse_view
borrowed_range
erfüllt, wenn die zugrunde liegende Ansicht diese Bedingung erfüllt.
Hinweise
| Feature-Test Makro | Wert | Std | Funktion |
|---|---|---|---|
__cpp_lib_ranges_reserve_hint
|
202502L
|
(C++26) |
ranges::approximately_sized_range
und
reserve_hint
|
Beispiel
#include <iostream> #include <ranges> int main() { static constexpr auto il = {3, 1, 4, 1, 5, 9}; std::ranges::reverse_view rv{il}; for (int i : rv) std::cout << i << ' '; std::cout << '\n'; for (int i : il | std::views::reverse) std::cout << i << ' '; std::cout << '\n'; // operator[] is inherited from std::view_interface for (auto i{0U}; i != rv.size(); ++i) std::cout << rv[i] << ' '; std::cout << '\n'; }
Ausgabe:
9 5 1 4 1 3 9 5 1 4 1 3 9 5 1 4 1 3
Fehlerberichte
Die folgenden verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.
| DR | Angewendet auf | Verhalten wie veröffentlicht | Korrektes Verhalten |
|---|---|---|---|
| LWG 3494 | C++20 |
reverse_view
war nie ein
borrowed_range
|
es ist ein
borrowed_range
wenn seine zugrunde liegende Ansicht es ist
|
Siehe auch
|
Iterator-Adapter für die Traversierung in umgekehrter Reihenfolge
(Klassen-Template) |
|
|
(C++20)
|
kehrt die Reihenfolge der Elemente in einem Bereich um
(Algorithmus-Funktionsobjekt) |
|
(C++20)
|
erstellt eine Kopie eines Bereichs, die umgekehrt ist
(Algorithmus-Funktionsobjekt) |