Namespaces
Variants

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

From cppreference.net
Ranges library
Range adaptors
template < bool Const >
class /*iterator*/
(1) ( exposition uniquement* )
Concepts auxiliaires
template < bool Const, class ... Rs >
concept /*concat-is-random-access*/ = /* voir description */ ;
(2) ( exposition uniquement* )
template < bool Const, class ... Rs >
concept /*concat-is-bidirectional*/ = /* voir 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 sauf le dernier élément. Équivalent à

template < bool Const, class ... Rs >
concept concat-is-random-access = // à titre d'illustration uniquement
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 sauf le dernier élément. Équivalent à

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

.

Table des matières

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 Définition
maybe-const  < Const, ranges:: concat_view > * parent_ un pointeur vers le parent concat_view
( objet membre d'exposition uniquement* )
base-iter it_ un itérateur dans la vue courante
( objet membre 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]