名稱空間
變體
操作

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

來自 cppreference.com
< 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 作為引數的關聯類時透過實參依賴查詢找到。

[編輯] 示例