命名空间
变体
操作

std::generator<Ref,V,Allocator>::迭代器

来自 cppreference.cn
< cpp‎ | 协程‎ | generator
 
 
工具库
语言支持
类型支持(基本类型、RTTI)
库特性测试宏 (C++20)
程序工具
变参函数
协程支持 (C++20)
契约支持 (C++26)
三路比较

通用工具
关系运算符 (C++20 中弃用)
整数比较函数
(C++20)(C++20)(C++20)  
(C++20)
交换类型操作
常用词汇类型



 
 
范围库 (Ranges library)
范围适配器 (Range adaptors)
 
 
class /*迭代器*/;
(仅作说明*)

generator::begin 的返回类型。模型 indirectly_readableinput_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 起)
  1. referencestd::generator 的底层类型。
  2. 设对于某个生成器对象 x,其 coroutine_ 在栈 *x.active_ 中。
  3. 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;

[编辑] 非成员函数

将底层迭代器与哨兵进行比较
(函数)

operator==(std::generator::iterator)

friend bool operator==( const /*迭代器*/& i, std::default_sentinel_t );
(C++23 起)

等价于 return i.coroutine_.done();

!= 运算符由 operator== 合成

此函数对于普通的非限定查找限定查找不可见,只能在 std::generator::iterator 作为参数的关联类时通过实参依赖查找找到。

[编辑] 示例