命名空间
变体
操作

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

内容

[edit] 成员类型

成员类型 定义
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] 数据成员

成员名称 定义
parent_ (私有) 类型为 ranges::split_view<V, Pattern>* 的指针,指向父 split_view 对象。
(仅供说明成员对象*)
cur_ (私有) 类型为 ranges::iterator_t<V> 的迭代器,指向底层 view,指向当前子范围的开头。
(仅供说明成员对象*)
next_ (私有) 类型为 ranges::subrange<ranges::iterator_t<V>> 的子范围,指向紧挨着当前子范围的模式的位置。
(仅供说明成员对象*)
trailing_empty_ (私有) 一个布尔标志,指示是否到达了一个空的尾随子范围(如果有)。
(仅供说明成员对象*)

[edit] 成员函数

(构造函数)
(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 ranges::range_reference_t<V> 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 是参数的关联类时,才能通过 依赖于参数的查找 找到。