Namespaces
Variants

std::ranges::concat_view<Vues...>::iterator

Depuis fr.cppreference.net
 
 
Bibliothèque de plages
Adaptateurs de plage
 
 
template< bool Const >
class /*iterator*/
(1) (exposition uniquement*)
Concepts d'aide
template< bool Const, class... Rs >
concept /*concat-is-random-access*/ = /* see description */;
(2) (exposition uniquement*)
template< bool Const, class... Rs >
concept /*concat-is-bidirectional*/ = /* see description */;
(3) (exposition uniquement*)
1) ranges::concat_view<Views...>::iterator est le type des itérateurs retournés par begin() et end() de ranges::concat_view<Views...>.
2) Soit Fs le pack qui contient tous les éléments de Rs à l'exception du dernier. Équivalent à

template<bool Const, class... Rs>
concept concat-is-random-access = // exposition only
    all-random-access <Const, Rs...> &&
    (ranges::common_range<maybe-const <Const, Fs>> && ...);

.
3) Soit Fs le pack qui contient tous les éléments de Rs à l'exception du dernier. Équivalent à

template<bool Const, class... Rs>
concept concat-is-bidirectional = // exposition only
    all-bidirectional <Const, Rs...> &&
    (ranges::common_range<maybe-const <Const, Fs>> && ...);

.

Paramètres du modèle

Const - indique si l'itérateur est un itérateur constant

Types imbriqués

Types d'exposition uniquement
Type Définition
base-iter std:: variant < ranges:: iterator_t < maybe-const  < Const, Views >> ... >
( type membre d'exposition uniquement* )
Types de propriétés d'itérateur
Type Définition
iterator_concept un tag d'itérateur , voir ci-dessous
iterator_category
(conditionnellement présent)
un tag d'itérateur, voir ci-dessous
value_type concat-value-t  < maybe-const  < Const, Views > ... >
difference_type

std:: common_type_t < ranges:: range_difference_t < maybe-const  < Const, Views >> ... >

Détermination du concept d'itérateur

iterator_concept est défini comme suit :

Détermination de la catégorie d'itérateur

iterator_category est défini si et seulement si all-forward  < Const, Views... > est modélisé. Dans ce cas, il est défini comme suit :

Membres de données

Membre Description
maybe-const <Const, ranges::concat_view>* parent_ un pointeur vers le parent concat_view
(objet membre* à titre d'exposition uniquement)
base-iter it_ un itérateur dans la vue actuelle
(objet membre* à titre d'exposition uniquement)

Fonctions membres

construit un itérateur
(fonction membre publique)
accède à l'élément
(fonction membre publique)
accède à un élément par index
(fonction membre publique)
avance ou décrémente l'itérateur sous-jacent
(fonction membre publique)
Modèles de fonction d'exposition uniquement
remplace it_ par le début de la vue suivante, si it_ est la fin de la vue actuelle
( fonction membre d'exposition uniquement* )
décrémente it_ de sorte qu'il pointe vers la position précédente
( fonction membre d'exposition uniquement* )
avance la position actuelle d'un décalage donné
( fonction membre d'exposition uniquement* )
décrémente la position actuelle d'une valeur donnée
( fonction membre d'exposition uniquement* )

Fonctions non membres

compare les itérateurs sous-jacents
(fonction)
effectue des opérations arithmétiques sur les itérateurs
(fonction)
(C++26)
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++26)
échange les objets pointés par deux itérateurs sous-jacents
(fonction)

Exemple

La version préliminaire peut être consultée sur Compiler Explorer .

#include <iostream>
#include <iterator>
#include <ranges>
int main()
{
    namespace views = std::views;
    static constexpr int p[]{1, 2, 3};
    static constexpr auto e = {4, 5};
    auto t = views::iota(6, 9);
    auto cat = views::concat(p, e, t);
    auto dog = views::concat(cat, cat);
    for (auto i{dog.begin()}; i != std::default_sentinel; ++i)
        std::cout << *i << ' ';
    std::cout << '\n';
}

Sortie :

1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8

Références

  • Norme C++26 (ISO/CEI 14882:2026) :
  • 26.7.18.3 Modèle de classe concat_view::iterator [range.concat.iterator]