std::ranges::filter_view<V,Pred>:: iterator
|
class
/*iterator*/
;
|
(seit C++20)
( nur zur Darstellung* ) |
|
Der Rückgabetyp von filter_view::begin .
Dies ist ein
bidirectional_iterator
, wenn
V
ein
bidirectional_range
modelliert, ein
forward_iterator
, wenn
V
ein
forward_range
modelliert, und andernfalls ein
input_iterator
.
Die Modifikation des Elements, auf das dieser Iterator zeigt, ist erlaubt, führt jedoch zu undefiniertem Verhalten, wenn der resultierende Wert das Prädikat des Filters nicht erfüllt.
Mitgliedertypen
| Typ | Definition |
iterator_concept
|
|
iterator_category
(nur vorhanden, falls
V
das Konzept
forward_range
modelliert)
|
Sei
|
value_type
|
ranges:: range_value_t < V > |
difference_type
|
ranges:: range_difference_t < V > |
Datenmitglieder
| Mitglied | Beschreibung |
ranges::
iterator_t
<
V
>
current_
(privat)
|
ein Iterator in die zugrundeliegende
view
( Nur zur Darstellung verwendetes Mitgliedsobjekt* ) |
ranges::
filter_view
<
V, Pred
>
*
parent_
(privat)
|
ein Zeiger auf das übergeordnete
filter_view
-Objekt
( Nur zur Darstellung verwendetes Mitgliedsobjekt* ) |
Memberfunktionen
|
Konstruiert einen Iterator
(öffentliche Elementfunktion) |
|
|
gibt den zugrundeliegenden Iterator zurück
(öffentliche Elementfunktion) |
|
|
leitet an den zugrundeliegenden Iterator weiter
(öffentliche Elementfunktion) |
|
|
erhöht den Iterator
(öffentliche Elementfunktion) |
|
|
verringert den Iterator
(öffentliche Elementfunktion) |
std::ranges::filter_view:: iterator :: iterator
|
/*iterator*/
(
)
requires std:: default_initializable < ranges:: iterator_t < V >> = default ; |
(1) | (since C++20) |
|
constexpr
/*iterator*/
(
filter_view
&
parent,
ranges:: iterator_t < V > current ) ; |
(2) | (since C++20) |
current_
und
parent_
mit ihren Standard-Member-Initialisierern, welche
=
ranges::
iterator_t
<
V
>
(
)
bzw.
=
nullptr
sind.
std::ranges::filter_view:: iterator :: base
|
constexpr
const
ranges::
iterator_t
<
V
>
&
base
(
)
const
&
noexcept
;
|
(1) | (seit C++20) |
|
constexpr
ranges::
iterator_t
<
V
>
base
(
)
&&
;
|
(2) | (seit C++20) |
std::ranges::filter_view:: iterator :: operator*,->
|
constexpr
ranges::
range_reference_t
<
V
>
operator
*
(
)
const
;
|
(1) | (seit C++20) |
|
constexpr
ranges::
iterator_t
<
V
>
operator
-
>
(
)
const
requires
/*has-arrow*/
<
ranges::
iterator_t
<
V
>>
&&
|
(2) | (seit C++20) |
Für einen Typ
I
wird
/*has-arrow*/
<
I
>
modelliert oder erfüllt, genau dann wenn
I
input_iterator
modelliert oder erfüllt, und entweder
I
ein Pointer-Typ ist oder
requires
(
I i
)
{
i.
operator
-
>
(
)
;
}
true
ergibt.
std::ranges::filter_view:: iterator :: operator++
|
constexpr
/*iterator*/
&
operator
++
(
)
;
|
(1) | (seit C++20) |
|
constexpr
void
operator
++
(
int
)
;
|
(2) | (seit C++20) |
|
constexpr
/*iterator*/
operator
++
(
int
)
requires ranges:: forward_range < V > ; |
(3) | (seit C++20) |
current_ = ranges:: find_if ( std :: move ( ++ current_ ) , ranges:: end ( parent_ - > base_ ) ,
std:: ref ( * parent_ - > pred_ ) ) ;
return * this ; .
std::ranges::filter_view:: iterator :: operator--
|
constexpr
/*iterator*/
&
operator
--
(
)
requires ranges:: bidirectional_range < V > ; |
(1) | (since C++20) |
|
constexpr
/*iterator*/
operator
--
(
int
)
requires ranges:: bidirectional_range < V > ; |
(2) | (since C++20) |
do
-- current_ ;
while ( ! std:: invoke ( * parent_ - > pred_, * current_ ) ) ;
return * this ; .
Nicht-Member-Funktionen
|
(C++20)
|
vergleicht die zugrundeliegenden Iteratoren
(Funktion) |
|
(C++20)
|
konvertiert das Ergebnis der Dereferenzierung des zugrundeliegenden Iterators in seinen zugehörigen Rvalue-Referenztyp
(Funktion) |
|
(C++20)
|
vertauscht die Objekte, auf die zwei zugrundeliegende Iteratoren zeigen
(Funktion) |
operator== (std::ranges::filter_view:: iterator )
|
friend
constexpr
bool
operator
==
(
const
/*iterator*/
&
x,
const
/*iterator*/
&
y
)
requires std:: equality_comparable < ranges:: iterator_t < V >> ; |
(seit C++20) | |
Entspricht return x. current_ == y. current_ ; .
Der
!=
-Operator wird aus
operator==
synthetisiert
.
Diese Funktion ist für gewöhnliche
unqualifizierte
oder
qualifizierte Suche
nicht sichtbar und kann nur durch
argumentabhängige Suche
gefunden werden, wenn
std::ranges::filter_view::
iterator
eine assoziierte Klasse der Argumente ist.
iter_move (std::ranges::filter_view:: iterator )
|
friend
constexpr
ranges::
range_rvalue_reference_t
<
V
>
iter_move
(
const
/*iterator*/
&
i
)
|
(seit C++20) | |
Entspricht return ranges:: iter_move ( i. current_ ) ; .
Diese Funktion ist für gewöhnliches
unqualifiziertes
oder
qualifiziertes Nachschlagen
nicht sichtbar und kann nur durch
argumentabhängiges Nachschlagen
gefunden werden, wenn
std::ranges::filter_view::
iterator
eine assoziierte Klasse der Argumente ist.
iter_swap (std::ranges::filter_view:: iterator )
|
friend
constexpr
void
iter_swap
(
const
/*iterator*/
&
x,
const
/*iterator*/
&
y
)
noexcept
(
noexcept
(
ranges::
iter_swap
(
x.
current_
, y.
current_
)
)
)
|
(seit C++20) | |
Entspricht ranges:: iter_swap ( x. current_ , y. current_ ) .
Diese Funktion ist für gewöhnliches
unqualifiziertes
oder
qualifiziertes Lookup
nicht sichtbar und kann nur durch
argumentabhängige Suche
gefunden werden, wenn
std::ranges::filter_view::
iterator
eine assoziierte Klasse der Argumente ist.
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 |
|---|---|---|---|
| P2259R1 | C++20 |
Member-Typ
iterator_category
war immer definiert
|
nur definiert wenn
V
ein
forward_range
ist
|
| LWG 3533 | C++20 |
die
const
&
Überladung von
base
kopierte den zugrundeliegenden Iterator
|
gibt eine Referenz darauf zurück |
| LWG 3593 | C++20 |
die
const
&
Überladung von
base
war möglicherweise nicht noexcept
|
als noexcept markiert |