std::ranges::split_view<V,Pattern>::iterator
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.
[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) |
- ranges::split_view* parent_ = nullptr;,
- ranges::iterator_t<V> cur_ = ranges::iterator_t<V>();,
- ranges::subrange<ranges::iterator_t<V>> next_ = ranges::subrange<ranges::iterator_t<V>>();, und
- bool trailing_empty_ = false;.
- ranges::split_view* parent_ = std::addressof(parent);,
- ranges::iterator_t<V> cur_ = std::move(current);,
- ranges::subrange<ranges::iterator_t<V>> next_ = std::move(next);, und
- bool trailing_empty_ = false;.
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) |
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;
[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.