<iterator>
定義預先定義的反覆運算器和串流反覆運算器、反覆運算器基本類型,以及支援範本。
需求
標頭: <iterator>
命名空間:std
備註
反覆運算器是指針的一般化,可讓C++程式以統一的方式處理不同的數據結構。 演算法會依反覆運算器所指定的值範圍運作,而不是在特定數據類型上運作。 演算法可以在符合反覆運算器需求的任何數據結構上運作。
在 C++20 中,有六種反覆運算器類別。 反覆運算器會以功能階層排列。 其功能是由 C++20 概念所指定。 如需各種反覆運算器及其功能的描述,請參閱 反覆運算器概念
Visual Studio 已將擴充功能新增至 C++標準連結庫反覆運算器,以支援已核取和未核取反覆運算器的偵錯。 如需詳細資訊,請參閱安全程式庫:C++ 標準程式庫。
成員
函式
名稱 | 描述 |
---|---|
advance |
依指定的位置數目遞增迭代器。 |
back_inserter |
建立可以在指定的容器背面插入項目的迭代器。 |
begin |
擷取在指定的容器中第一個項目的迭代器。 |
cbegin |
將只讀反覆運算器擷取至指定容器中的第一個專案。 |
cend |
將只讀反覆運算器擷取至位於指定容器中最後一個專案後面的元素。 |
crbegin |
取得指定容器開頭的反向唯讀反覆運算器。 |
crend |
取得傳回內容 crbegin() 結尾的 sentinel。 |
data |
取得指定容器中第一個專案的指標。 |
distance |
判斷在兩個迭代器定址的位置之間的增量數。 |
end |
擷取迭代器,指向在指定的容器中最後一個項目後面的項目。 |
empty |
測試指定的容器是否為空白。 |
front_inserter |
建立可以在指定的容器前面插入項目的迭代器。 |
inserter |
迭代器配接器,將新的項目新增至容器中指定的插入點。 |
make_checked_array_iterator |
checked_array_iterator 建立其他演算法使用的 。 注意:這個函式是「C++ 標準程式庫」的 Microsoft 擴充功能。 使用此函式實作的程式代碼無法移植到不支援此Microsoft擴充功能的標準組建環境C++。 |
make_move_iterator |
傳回移動迭代器,其中包含所提供的迭代器,做為其儲存的基底迭代器。 |
make_unchecked_array_iterator |
unchecked_array_iterator 建立其他演算法使用的 。 注意:這個函式是「C++ 標準程式庫」的 Microsoft 擴充功能。 使用此函式實作的程式代碼無法移植到不支援此Microsoft擴充功能的標準組建環境C++。 |
next |
反覆運算指定的次數,並傳回新的迭代器位置。 |
prev |
以反向方向反覆運算指定的次數,並傳回新的迭代器位置。 |
rbegin |
取得指定容器開頭的反向反覆運算器。 |
rend |
取得指定容器結尾之 sentinel 的反向反覆運算器。 |
size |
取得項目數目。 |
操作員
名稱 | 描述 |
---|---|
operator!= |
測試運算子左邊的反覆運算器物件是否不等於右邊的反覆運算器物件。 |
operator== |
測試運算子左邊的迭代器物件是否等於右邊的迭代器物件。 |
operator< |
測試運算子左邊的迭代器物件是否小於右邊的迭代器物件。 |
operator<= |
測試運算子左邊的迭代器物件是否小於或等於右邊的迭代器物件。 |
operator> |
測試運算子左邊的迭代器物件是否大於右邊的迭代器物件。 |
operator>= |
測試運算子左邊的迭代器物件是否大於或等於右邊的迭代器物件。 |
operator+ |
將位移新增至迭代器,並傳回新的 reverse_iterator ,定址在新的位移位置中插入的項目。 |
operator- |
將一個迭代器減去另一個,並傳回差異。 |
類別
名稱 | 描述 |
---|---|
back_insert_iterator |
類別範本描述輸出反覆運算器物件。 它會將專案插入 類型的 Container 容器中,它會透過其儲存的容器所儲存的受保護 pointer 物件進行存取。 |
bidirectional_iterator_tag |
類別,提供代表雙向反覆運算器的函式傳回型 iterator_category 別。 |
checked_array_iterator |
類別,使用隨機存取、已檢查的迭代器來存取陣列。 注意:這個類別是「C++ 標準程式庫」的 Microsoft 擴充功能。 使用此函式實作的程式代碼無法移植到不支援此Microsoft擴充功能的標準組建環境C++。 |
forward_iterator_tag |
類別,提供代表正向反覆運算器的函式傳回型 iterator_category 別。 |
front_insert_iterator |
類別範本描述輸出反覆運算器物件。 它會將專案插入 類型的 Container 容器中,它會透過其儲存的容器所儲存的受保護 pointer 物件進行存取。 |
input_iterator_tag |
類別,提供代表輸入反覆運算器之函式的傳回型 iterator_category 別。 |
insert_iterator |
類別範本描述輸出反覆運算器物件。 它會將專案插入 類型的 Container 容器中,它會透過其儲存的容器所儲存的受保護 pointer 物件進行存取。 它也會儲存類別 的Container::iterator 受保護iterator 物件,稱為 iter 。 |
istream_iterator |
類別範本描述輸入反覆運算器物件。 它會從輸入數據流中擷取 類別 Ty 的物件,該數據流會透過其儲存的物件來存取,其類型為的指標 basic_istream<Elem, Tr> 。 |
istreambuf_iterator |
類別範本描述輸入反覆運算器物件。 它會將 類別 Elem 的專案插入輸出資料流緩衝區中,而該緩衝區會透過儲存的物件進行存取,類型 pointer 為 basic_streambuf<Elem, Tr> 。 |
iterator |
類別範本會當做所有反覆運算器的基底類型使用。 |
iterator_traits |
樣板協助程式類別,提供與不同迭代器類型相關聯的關鍵類型,因此可以相同方式參考這些不同迭代器類型。 |
move_iterator |
move_iterator 物件儲存 RandomIterator 類型的隨機存取迭代器。 它的行為就像隨機存取迭代器 (除非取值時)。 operator* 的結果會隱含轉型為 value_type&&: 以建立 rvalue reference 。 |
ostream_iterator |
類別範本描述輸出反覆運算器物件。 它會將 類別 Type 的物件插入輸出資料流中,而輸出資料流會透過儲存的物件存取該資料流,類型 pointer 為 basic_ostream<Elem, Tr> 。 |
ostreambuf_iterator |
類別範本描述輸出反覆運算器物件。 它會將 類別 Elem 的專案插入輸出數據流緩衝區中,而該緩衝區會透過儲存的物件來存取該緩衝區,其類型為的指標 basic_streambuf<Elem, Tr> 。 |
output_iterator_tag |
類別,提供代表輸出反覆運算器的函式傳回型 iterator_category 別。 |
random_access_iterator_tag |
類別,提供代表隨機存取反覆運算器的函式傳回型 iterator_category 別。 |
reverse_iterator |
類別範本描述對象的行為就像隨機存取反覆運算器一樣,只會反向運作。 |
unchecked_array_iterator |
類別,使用隨機存取、未檢查的迭代器來存取陣列。 注意:這個類別是「C++ 標準程式庫」的 Microsoft 擴充功能。 使用此函式實作的程式代碼無法移植到不支援此Microsoft擴充功能的標準組建環境C++。 |
概念
下列概念定義於 命名空間中 std
。 它們適用於反覆運算器,也與概念中所述<ranges>
範圍的反覆運算器類別相關。
反覆運算器概念 | 描述 |
---|---|
bidirectional_iterator C++20 |
指定可向前和向後讀取和寫入的反覆運算器。 |
contiguous_iterator C++20 |
指定反覆運算器,其元素在記憶體中循序、大小相同,而且可以使用指標算術來存取。 |
forward_iterator C++20 |
指定可多次讀取(且可能寫入)的反覆運算器。 |
input_iterator C++20 |
指定您至少可以從一次讀取的反覆運算器。 |
input_or_output_iterator C++20 |
反覆運算器概念分類的基礎。 |
output_iterator |
指定您可以寫入的反覆運算器。 |
random_access_iterator C++20 |
指定您可以依索引讀取和寫入的反覆運算器。 |
sentinel_for C++20 |
指定反覆運算器類型的 sentinel。 |
sized_sentinel_for C++20 |
指定反覆運算器及其 sentinel 可以減去 (使用 - ) 來尋找常數時間的差異。 |