std::generator<Ref,V,Allocator>::iterator
来自 cppreference.com
class /*iterator*/; |
(自 C++23 起) (仅供说明*) |
|
generator::begin
的返回值类型。
符合 indirectly_readable
和 input_iterator
。
内容 |
[编辑] 成员类型
成员类型 | 定义 |
value_type
|
std::generator::value
|
difference_type
|
std::ptrdiff_t |
[编辑] 数据成员
成员名称 | 定义 |
coroutine_ (私有) |
类型为 std::coroutine_handle<std::generator::promise_type> 的协程句柄。 (仅供说明成员对象*) |
[编辑] 成员函数
构造迭代器 (公有成员函数) | |
分配另一个迭代器 (公有成员函数) | |
返回基础值 (公有成员函数) | |
推进迭代器 (公有成员函数) |
std::generator::iterator::iterator
/*迭代器*/( /*迭代器*/&& other ) noexcept; |
(自 C++23 起) | |
将 coroutine_
初始化为 std::exchange(other.coroutine_, {});.
std::generator::迭代器::operator=
/*迭代器*/& operator=( /*迭代器*/&& other ) noexcept; |
(自 C++23 起) | |
等效于 coroutine_ = std::exchange(other.coroutine_, {});.
返回: *this.
std::generator::迭代器::operator*
reference operator*() const noexcept( std::is_nothrow_copy_constructible_v<reference> ); |
(自 C++23 起) | |
- 令
reference
为std::generator
的基础类型。 - 对于某个生成器对象 x,令其
coroutine_
在堆栈 *x.active_ 中。 - 令 x.active_->top() 指向一个挂起的协程,其承诺对象为 p。
等效于 return static_cast<reference>(*p.value_);.
std::generator::迭代器::operator++
constexpr /*迭代器*/& operator++(); |
(1) | (自 C++23 起) |
constexpr void operator++( int ); |
(2) | (自 C++23 起) |
1) 对于某个生成器对象 x,令
coroutine_
在堆栈 *x.active_ 中。 等效于 x.active_->top().resume().
返回: *this.
2) 等效于 ++*this;.
[edit] 非成员函数
(C++23) |
将底层迭代器与哨兵进行比较 (函数) |
operator==(std::generator::迭代器)
friend bool operator==( const /*迭代器*/& i, std::default_sentinel_t ); |
(自 C++23 起) | |
等效于 return i.coroutine_.done();.
!=
运算符从 operator==
中 合成。
此函数对普通的 非限定 或 限定查找 不可見,只能通过 依赖于参数的查找 找到,前提是 std::generator::迭代器 是参数的关联类。
[edit] 例子
本节内容尚未完善 原因:没有示例 |