std::ranges::filter_view<V,Pred>:: iterator
|
class
/*iterator*/
;
|
(depuis C++20)
( exposition uniquement* ) |
|
Le type de retour de filter_view::begin .
Ceci est un
bidirectional_iterator
si
V
modélise
bidirectional_range
, un
forward_iterator
si
V
modélise
forward_range
, et
input_iterator
sinon.
La modification de l'élément désigné par cet itérateur est autorisée, mais entraîne un comportement indéfini si la valeur résultante ne satisfait pas au prédicat du filtre.
Types membres
| Type | Définition |
iterator_concept
|
|
iterator_category
(présent uniquement si
V
modélise
forward_range
)
|
Soit
|
value_type
|
ranges:: range_value_t < V > |
difference_type
|
ranges:: range_difference_t < V > |
Membres de données
| Membre | Description |
ranges::
iterator_t
<
V
>
current_
(privé)
|
un itérateur vers la
view
sous-jacente
( objet membre d'exposition uniquement* ) |
ranges::
filter_view
<
V, Pred
>
*
parent_
(privé)
|
un pointeur vers l'objet
filter_view
parent
( objet membre d'exposition uniquement* ) |
Fonctions membres
|
construit un itérateur
(fonction membre publique) |
|
|
retourne l'itérateur sous-jacent
(fonction membre publique) |
|
|
transmet à l'itérateur sous-jacent
(fonction membre publique) |
|
|
avance l'itérateur
(fonction membre publique) |
|
|
décrémente l'itérateur
(fonction membre publique) |
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_
et
parent_
avec leurs initialiseurs de membre par défaut, qui sont
=
ranges::
iterator_t
<
V
>
(
)
et
=
nullptr
respectivement.
std::ranges::filter_view:: iterator :: base
|
constexpr
const
ranges::
iterator_t
<
V
>
&
base
(
)
const
&
noexcept
;
|
(1) | (depuis C++20) |
|
constexpr
ranges::
iterator_t
<
V
>
base
(
)
&&
;
|
(2) | (depuis C++20) |
std::ranges::filter_view:: iterator :: operator*,->
|
constexpr
ranges::
range_reference_t
<
V
>
operator
*
(
)
const
;
|
(1) | (depuis C++20) |
|
constexpr
ranges::
iterator_t
<
V
>
operator
-
>
(
)
const
requires
/*has-arrow*/
<
ranges::
iterator_t
<
V
>>
&&
|
(2) | (depuis C++20) |
Pour un type
I
,
/*has-arrow*/
<
I
>
est modélisé ou satisfait, si et seulement si
I
modélise ou satisfait
input_iterator
respectivement, et soit
I
est un type pointeur, soit
requires
(
I i
)
{
i.
operator
-
>
(
)
;
} est
true
.
std::ranges::filter_view:: iterator :: operator++
|
constexpr
/*iterator*/
&
operator
++
(
)
;
|
(1) | (depuis C++20) |
|
constexpr
void
operator
++
(
int
)
;
|
(2) | (depuis C++20) |
|
constexpr
/*iterator*/
operator
++
(
int
)
requires ranges:: forward_range < V > ; |
(3) | (depuis 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 ; .
Fonctions non membres
|
(C++20)
|
compare les itérateurs sous-jacents
(fonction) |
|
(C++20)
|
convertit le résultat du déréférencement de l'itérateur sous-jacent en son type de référence rvalue associé
(fonction) |
|
(C++20)
|
échange les objets pointés par deux itérateurs sous-jacents
(fonction) |
operator== (std::ranges::filter_view:: iterator )
|
friend
constexpr
bool
operator
==
(
const
/*iterator*/
&
x,
const
/*iterator*/
&
y
)
requires std:: equality_comparable < ranges:: iterator_t < V >> ; |
(depuis C++20) | |
Équivalent à return x. current_ == y. current_ ; .
L'opérateur
!=
est
synthétisé
à partir de
operator==
.
Cette fonction n'est pas visible par la
recherche non qualifiée
ordinaire ou la
recherche qualifiée
, et ne peut être trouvée que par la
recherche dépendante des arguments
lorsque
std::ranges::filter_view::
iterator
est une classe associée des arguments.
iter_move (std::ranges::filter_view:: iterator )
|
friend
constexpr
ranges::
range_rvalue_reference_t
<
V
>
iter_move
(
const
/*iterator*/
&
i
)
|
(depuis C++20) | |
Équivalent à return ranges:: iter_move ( i. current_ ) ; .
Cette fonction n'est pas visible par la
recherche non qualifiée
ordinaire ou la
recherche qualifiée
, et ne peut être trouvée que par la
recherche dépendante des arguments
lorsque
std::ranges::filter_view::
iterator
est une classe associée des arguments.
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_
)
)
)
|
(depuis C++20) | |
Équivalent à ranges:: iter_swap ( x. current_ , y. current_ ) .
Cette fonction n'est pas visible par la
recherche non qualifiée
ou
recherche qualifiée
ordinaire, et ne peut être trouvée que par
la recherche dépendante des arguments
lorsque
std::ranges::filter_view::
iterator
est une classe associée des arguments.
Rapports de défauts
Les rapports de défauts modifiant le comportement suivants ont été appliqués rétroactivement aux normes C++ précédemment publiées.
| DR | Appliqué à | Comportement publié | Comportement correct |
|---|---|---|---|
| P2259R1 | C++20 |
le type membre
iterator_category
était toujours défini
|
défini uniquement si
V
est un
forward_range
|
| LWG 3533 | C++20 |
la surcharge
const
&
de
base
copiait l'itérateur sous-jacent
|
retourne une référence vers celui-ci |
| LWG 3593 | C++20 |
la surcharge
const
&
de
base
pouvait ne pas être noexcept
|
rendue noexcept |