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

出自cppreference.com
< cpp‎ | ranges‎ | split view
 
 
範圍庫
範圍適配器
 
 
class /*iterator*/;
(C++20 起)
(僅用於闡述*)

split_view::begin 的返回類型。這是一種 forward_iterator,因此預期 V 至少實現了 forward_range

目錄

[編輯] 成員類型

成員類型 定義
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>

[編輯] 數據成員

成員 描述
ranges::split_view<V, Pattern>* parent_ (私有) 指向父 split_view 對象的指針
(僅用於闡述的成員對象*)
ranges::iterator_t<V> cur_ (私有) 指向底層 view 中當前子範圍的起始的迭代器
(僅用於闡述的成員對象*)
ranges::subrange<ranges::iterator_t<V>> next_ (私有) 表示當前子範圍之後的模式位置的子範圍
(僅用於闡述的成員對象*)
bool trailing_empty_ (私有) 指示是否抵達空尾部子範圍(若存在)的標記
(僅用於闡述的成員對象*)

[編輯] 成員函數

(構造函數)
(C++20)
構造迭代器
(公開成員函數)
base
(C++20)
返回底層迭代器
(公開成員函數)
operator*
(C++20)
返回當前子範圍
(公開成員函數)
operator++operator++(int)
(C++20)
推進迭代器
(公開成員函數)

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

/*iterator*/() = default;
(1) (C++20 起)
constexpr /*iterator*/( split_view& parent, ranges::iterator_t<V> current,
                        ranges::subrange<ranges::iterator_t<V>> next );
(2) (C++20 起)
1) 以各自的默認成員初始化式對各非靜態數據成員進行值初始化,即:
2) 初始化各非靜態數據成員:

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

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

等價於 return cur_;

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

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

等價於 return {cur_, next_.begin()};

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

constexpr /*iterator*/& operator++();
(1) (C++20 起)
constexpr void operator++( int );
(2) (C++20 起)
1) 等價於
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) 等價於 auto tmp = *this; ++*this; return tmp;

[編輯] 非成員函數

operator==
(C++20)
比較底層迭代器
(函數)

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

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

等價於 return x.cur_ == y.cur_ and x.trailing_empty_ == y.trailing_empty_;

!= 運算符從 operator== 運算符合成

此函數對常規的無限定有限定查找不可見,而只能在 std::ranges::split_view::iterator 為實參的關聯類時由實參依賴查找找到。