std::generator<Ref,V,Allocator>::迭代器
来自 cppreference.cn
class /*迭代器*/; |
(仅作说明*) | |
generator::begin
的返回类型。模型 indirectly_readable
和 input_iterator
。
目录 |
[编辑] 成员类型
成员类型 | 定义 |
值类型(value_type)
|
std::generator::value
|
差值类型(difference_type)
|
std::ptrdiff_t |
[编辑] 数据成员
成员 | 描述 |
std::coroutine_handle<std::generator::promise_type> coroutine_ |
协程句柄 (仅用于阐释的成员对象*) |
[编辑] 成员函数
构造一个迭代器 (公开成员函数) | |
赋值另一个迭代器 (公开成员函数) | |
返回底层值 (公开成员函数) | |
前进迭代器 (公开成员函数) |
std::generator::迭代器::迭代器
/*迭代器*/( /*迭代器*/&& other ) noexcept; |
(C++23 起) | |
使用 std::exchange(other.coroutine_, {}); 初始化 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 起) |
等价于 x.active_->top().resume()。
返回: *this。
2) 等价于 ++*this;。
[编辑] 非成员函数
(C++23) |
将底层迭代器与哨兵进行比较 (函数) |
operator==(std::generator::iterator)
friend bool operator==( const /*迭代器*/& i, std::default_sentinel_t ); |
(C++23 起) | |
等价于 return i.coroutine_.done();。
!=
运算符由 operator==
合成。
此函数对于普通的非限定查找或限定查找不可见,只能在 std::generator::iterator
作为参数的关联类时通过实参依赖查找找到。
[编辑] 示例
本节不完整 原因:无示例 |