Namensräume
Varianten
Aktionen

std::ranges::split_view<V,Pattern>::iterator

Von cppreference.com
< cpp‎ | ranges‎ | split view
 
 
Bereichsbibliothek
Range-Adaptoren
 
 
class /*iterator*/;
(seit C++20)
(nur Exposition*)

Der Rückgabetyp von split_view::begin. Dies ist ein forward_iterator, daher wird erwartet, dass V mindestens forward_range modelliert.

Inhalt

[edit] Mitgliedstypen

Mitgliedertyp Definition
iterator_concept std::forward_iterator_tag
iterator_category std::input_iterator_tag
value_type ranges::subrange<ranges::iterator_t<V>>
difference_type ranges::range_difference_t<V>

[edit] Datenmember

Mitglied Beschreibung
ranges::split_view<V, Pattern>* parent_ (private) ein Zeiger auf das übergeordnete split_view-Objekt
((exposition-only member object*)
ranges::iterator_t<V> cur_ (private) ein Iterator in die zugrunde liegende view, der auf den Anfang eines aktuellen Teilbereichs zeigt
((exposition-only member object*)
ranges::subrange<ranges::iterator_t<V>> next_ (private) ein Subrange auf die Position des Musters neben dem aktuellen Teilbereich
((exposition-only member object*)
bool trailing_empty_ (private) ein Flag, das anzeigt, ob ein leerer nachfolgender Teilbereich (falls vorhanden) erreicht wurde
((exposition-only member object*)

[edit] Member-Funktionen

(Konstruktor)
(C++20)
Konstruiert einen Iterator
(öffentliche Memberfunktion)
base
(C++20)
gibt den zugrundeliegenden Iterator zurück
(öffentliche Memberfunktion)
operator*
(C++20)
gibt den aktuellen Teilbereich zurück
(öffentliche Memberfunktion)
operator++operator++(int)
(C++20)
bewegt den Iterator vorwärts
(öffentliche Memberfunktion)

std::ranges::split_view::iterator::iterator

/*iterator*/() = default;
(1) (seit C++20)
constexpr /*iterator*/( split_view& parent, ranges::iterator_t<V> current,
                        ranges::subrange<ranges::iterator_t<V>> next );
(2) (seit C++20)
1) Initialisiert nicht-statische Datenmember mit ihren Standard-Member-Initialisierern, d.h.
2) Initialisiert nicht-statische Datenmember

std::ranges::split_view::iterator::base

constexpr const ranges::iterator_t<V> base() const;
(seit C++20)

Entspricht return cur_;.

std::ranges::split_view::iterator::operator*

constexpr value_type operator*() const;
(seit C++20)

Entspricht return {cur_, next_.begin()};.

std::ranges::split_view::iterator::operator++

constexpr /*iterator*/& operator++();
(1) (seit C++20)
constexpr void operator++( int );
(2) (seit C++20)
1) Äquivalent zu
cur_ = next_.begin();

if (cur_ != ranges::end(parent_->base_))
{
    if (cur_ = next_.end(); cur_ == ranges::end(parent_->base_))
    {
       trailing_empty_ = true;
       next_ = {cur_, cur_};
    }
    else
       next_ = parent_->find_next(cur_);
}
else
   trailing_empty_ = false;

return *this;
2) Entspricht auto tmp = *this; ++*this; return tmp;.

[edit] Nicht-Member-Funktionen

operator==
(C++20)
vergleicht die zugrundeliegenden Iteratoren
(Funktion)

operator==(std::ranges::split_view::iterator, std::ranges::split_view::iterator)

friend constexpr bool operator==( const /*iterator*/& x, const /*iterator*/& y );
(seit C++20)

Entspricht return x.cur_ == y.cur_ and x.trailing_empty_ == y.trailing_empty_;.

Der Operator != wird aus operator== synthetisiert.

Diese Funktion ist für gewöhnliche unqualifizierte oder qualifizierte Suchen nicht sichtbar und kann nur durch Argument-abhängige Suche gefunden werden, wenn std::ranges::split_view::iterator eine zugehörige Klasse der Argumente ist.