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
作為引數的關聯類時透過實參依賴查詢找到。
[編輯] 示例
本節不完整 原因:無示例 |