名稱空間
變體
操作

std::common_iterator

來自 cppreference.com
 
 
迭代器庫
迭代器概念
迭代器原語
演算法概念與工具
間接可呼叫概念
常用演算法要求
(C++20)
(C++20)
(C++20)
工具
(C++20)
迭代器介面卡
common_iterator
(C++20)

範圍訪問
(C++11)(C++14)
(C++14)(C++14)  
(C++11)(C++14)
(C++14)(C++14)  
(C++17)(C++20)
(C++17)
(C++17)
 
 
定義於標頭檔案 <iterator>
template< std::input_or_output_iterator I, std::sentinel_for<I> S >

    requires ( !std::same_as<I, S> && std::copyable<I> )

class common_iterator;
(C++20 起)

std::common_iterator 是一個迭代器 I / 哨兵 S 介面卡,它可以將一個非公共範圍(其中 IS 的型別不同)表示為 common_range,透過包含一個迭代器或一個哨兵,並定義適當的相等比較運算子 operator==

std::common_iterator 可以用作由迭代器/哨兵對錶示的序列與期望 common_range 類序列的傳統函式之間的“橋樑”。

目錄

[編輯] 資料成員

成員名稱 (Member name) 定義
var 型別為 std::variant<I, S> 的物件
(僅用於闡釋的成員物件*)

[編輯] 成員函式

構造一個新的 common_iterator
(public 成員函式) [編輯]
賦值另一個 common_iterator
(public 成員函式) [編輯]
訪問指向的元素
(public 成員函式) [編輯]
遞增 common_iterator
(public 成員函式) [編輯]

[編輯] 非成員函式

比較底層迭代器或哨兵
(函式模板) [編輯]
(C++20)
計算兩個迭代器介面卡之間的距離
(函式模板) [編輯]
(C++20)
將底層迭代器解引用的結果轉換為其關聯的右值引用型別
(函式) [編輯]
(C++20)
交換兩個底層迭代器指向的物件
(函式模板) [編輯]

[編輯] 輔助類

計算 std::common_iterator 型別的關聯差值型別
(類模板特化) [編輯]
std::common_iterator 型別的屬性提供統一介面
(類模板特化) [編輯]

[編輯] 示例

#include <algorithm>
#include <iostream>
#include <iterator>
#include <list>
#include <string>
 
template<class ForwardIter>
void fire(ForwardIter first, ForwardIter last)
{
    std::copy(first, last, std::ostream_iterator<std::string>{std::cout, " "});    
}
 
int main()
{
    std::list<std::string> stars{"Pollux", "Arcturus", "Mira", "Aldebaran", "Sun"};
 
    using IT = std::common_iterator<
                   std::counted_iterator<std::list<std::string>::iterator>,
                   std::default_sentinel_t>;
 
    fire(IT(std::counted_iterator(stars.begin(), stars.size() - 1)),
         IT(std::default_sentinel));
}

輸出

Pollux Arcturus Mira Aldebaran

[編輯] 參考

  • C++23 標準 (ISO/IEC 14882:2024)
  • 23.5.5 Common iterators [iterators.common]
  • C++20 標準 (ISO/IEC 14882:2020)
  • 23.5.4 Common iterators [iterators.common]

[編輯] 另請參閱

指定範圍具有相同的迭代器和哨兵型別
(概念) [編輯]
view 轉換為 common_range
(類模板) (範圍介面卡物件)[編輯]