std::generator<Ref,V,Allocator>::迭代器
來自 cppreference.com
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 作為引數的關聯類時透過實參依賴查詢找到。
[編輯] 示例
| 本節不完整 原因:無示例 |