Namensräume
Varianten
Aktionen

std::ranges::concat_view<Views...>::iterator<Const>::satisfy, prev, advance-fwd, advance-bwd

Von cppreference.com
< cpp‎ | ranges‎ | concat view‎ | iterator
 
 
Bereichsbibliothek
Range-Adaptoren
 
 

Die folgenden Expoitions-Only-Member-Funktion-Templates vereinfachen die Beschreibung.

Jede Hilfsfunktions-Vorlage hat einen Nicht-Typ-Template-Parameter vom Typ std::size_t.

  • Wenn der Name des Template-Parameters N ist, ist das Template-Argument immer it_ .index().
  • Wenn der Name des Template-Parameters I ist, kann das Template-Argument jeder Wert von std::size_t in [0sizeof...(Views)) sein.

Das Template-Argument ist jedoch möglicherweise keine Compile-Zeit-Konstante, daher ist die tatsächliche Auswirkung von helper <non_const>(/* arguments */) ähnlich wie if (non_const == 0)
    helper <0>(/* arguments */);
else if (non_const == 1)
    helper <1>(/* arguments */);
/* other indices */
else if (non_const == (sizeof...(Views) - 1))
    helper <sizeof...(Views) - 1>(/* arguments */);
.

Inhalt

[bearbeiten] Helper templates

Mini-Hilfsvorlagen

template< std::size_t N >
constexpr auto /*get-iter*/();
(1) (nur Exposition*)
template< std::size_t I >
constexpr auto /*get-view*/();
(2) (nur Exposition*)
template< std::size_t I >
constexpr auto /*get-begin*/();
(3) (nur Exposition*)
template< std::size_t I >
constexpr auto /*get-end*/();
(4) (nur Exposition*)
template< std::size_t N >
constexpr auto /*to-underlying-diff-type*/( difference_type value );
(5) (nur Exposition*)

Die Mini-Hilfsvorlagen vereinfachen die Beschreibung der Haupt-Hilfsvorlagen und Member-Funktionen. Sie sind nicht in den C++-Standarddokumenten enthalten.

1) Ruft den zugrundeliegenden Iterator ab, der in it_ enthalten ist.
Gibt std::get<N>(it_ ) zurück.
2) Ruft die I-te View in der übergeordneten concat_view ab.
Gibt std::get<I>(parent_ ->views_ ) zurück.
3) Ruft einen Iterator zum Anfang der I-ten View in der übergeordneten concat_view ab.
Gibt ranges::begin(get-view <I>()) zurück.
4) Ruft einen Iterator hinter dem Ende oder einen Sentinel der I-ten View in der übergeordneten concat_view ab.
Gibt ranges::end(get-view <I>()) zurück.
5) Konvertiert value in den zugrundeliegenden Differenztyp des zugrundeliegenden Iterators, der in it_ enthalten ist.
Gibt static_cast<std::iter_difference_t<std::variant_alternative_t<N, base-iter >>>(value) zurück.

std::ranges::concat_view::iterator::satisfy<N>

template< std::size_t N >
constexpr void /*satisfy*/();
(nur Exposition*)

Passt die aktuelle (globale) Position von it_ an.

  • Wenn N gleich sizeof...(Views) - 1 ist, tut sie nichts.
  • Äquivalent zu if (get-iter <N>() == get-end <N>())
    {
        it_ .template emplace<N + 1>(get-begin <N + 1>());
        satisfy <N + 1>();
    }
    .

std::ranges::concat_view::iterator::prev<N>

template< size_t N >
constexpr void /*prev*/();
(nur Exposition*)

Verschiebt it_ auf die vorherige (globale) Position.

  • Wenn N gleich 0 ist, ist dies äquivalent zu --get-iter <0>();.
  • Andernfalls ist dies äquivalent zu if (get-iter <N>() == get-begin <N>())
    {
        it_ .template emplace<N - 1>(get-end <N - 1>());
        prev <N - 1>();
    }
    else
        --get-iter <0>();
    .

std::ranges::concat_view::iterator::advance-fwd<N>

template< size_t N >

constexpr void /*advance-fwd*/( difference_type offset,

                                difference_type steps );
(nur Exposition*)

Bewegt die aktuelle (globale) Position um steps Schritte vorwärts.

Parameter

offset - Der Offset der aktuellen (globalen) Position vom Anfang des Bereichs, auf den it_ aktuell verweist
Schritte - Die Anzahl der vorwärts zu machenden Schritte

std::ranges::concat_view::iterator::advance-bwd<N>

template< size_t N >

constexpr void /*advance-bwd*/( difference_type offset,

                                difference_type steps );
(nur Exposition*)

Bewegt die aktuelle (globale) Position um steps Schritte rückwärts.

Parameter

offset - Der Offset der aktuellen (globalen) Position vom Anfang des Bereichs, auf den it_ aktuell verweist
Schritte - Die Anzahl der rückwärts zu machenden Schritte