名前空間
変種
操作

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

From cppreference.com
< cpp‎ | ranges‎ | split view
 
 
Rangesライブラリ
Rangeアダプタ
 
 
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_ (private) 親の split_view オブジェクトへのポインタ
(説明用のメンバオブジェクト*)
ranges::iterator_t<V> cur_ (private) 現在のサブレンジの開始位置を指す、基底の view へのイテレータ
(説明用のメンバオブジェクト*)
ranges::subrange<ranges::iterator_t<V>> next_ (private) 現在のサブレンジの次にあるパターンの位置へのサブレンジ
(説明用のメンバオブジェクト*)
bool trailing_empty_ (private) 空の末尾サブレンジ(もしあれば)に到達したかどうかを示すフラグ
(説明用のメンバオブジェクト*)

[編集] メンバー関数

(コンストラクタ)
(C++20)
イテレータを構築する
(public member function)
base
(C++20)
基盤となるイテレータを返します。
(public member function)
operator*
(C++20)
現在のサブレンジを返します。
(public member function)
operator++operator++(int)
(C++20)
イテレータを進める
(public member function)

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 が引数の関連クラスである場合にのみ 引数依存名前探索 (ADL) で見つけることができます。

English 日本語 中文(简体) 中文(繁體)