<iterator>

定義済みの反復子とストリーム反復子、反復子プリミティブ、サポート テンプレートを定義します。

要件

ヘッダー: <iterator>

名前空間: std

解説

反復子は、C++ プログラムが異なるデータ構造を一様な方法で操作できるようにするポインターの一般化です。 アルゴリズムは、特定のデータ型に対して操作するのではなく、反復子の種類で指定された値の範囲に対して動作します。 アルゴリズムは、反復子の要件を満たす任意のデータ構造で動作できます。

C++20 では、反復子には 6 つのカテゴリがあります。 反復子は、機能の階層に配置されます。 これらの機能は、C++20 の概念で指定されています。 さまざまな反復子とその機能の説明については、「 Iterator の概念」を参照してください。

Visual Studio では、チェックされた反復子とチェックされていない反復子のデバッグをサポートするために、C++ 標準ライブラリ反復子に拡張機能が追加されました。 詳細については、「安全なライブラリ: C++ 標準ライブラリ」をご覧ください。

メンバー

関数

名前 説明
advance 指定された位置の番号によって反復子をインクリメントします。
back_inserter 指定されたコンテナーの後ろに要素を挿入できる反復子を作成します。
begin 指定されたコンテナーの最初の要素への反復子を取得します。
cbegin 指定したコンテナー内の最初の要素を指す読み取り専用反復子を取得します。
cend 指定したコンテナー内の最後の要素に続く要素を指す読み取り専用反復子を取得します。
crbegin 指定したコンテナーの先頭を指す逆読み取り専用反復子を取得します。
crend crbegin()が返す内容の最後にセンチネルを取得します。
data 指定したコンテナー内の最初の要素へのポインターを取得します。
distance 2 つの反復子によってアドレス指定された位置の間のインクリメント数を決定します。
end 指定されたコンテナーの最後の要素の後ろにある要素への反復子を取得します。
empty 指定したコンテナーが空かどうかをテストします。
front_inserter 指定されたコンテナーの前に要素を挿入できる反復子を作成します。
inserter 指定された挿入ポイントにあるコンテナーに新しい要素を追加する反復子アダプター。
make_checked_array_iterator 他のアルゴリズムで使用できる checked_array_iterator を作成します。 注: この関数は、標準 C++ ライブラリの Microsoft 拡張機能です。 この関数を使用して実装されたコードは、この Microsoft 拡張機能をサポートしていない C++ Standard ビルド環境には移植できません。
make_move_iterator 提供された反復子を含む移動反復子を、格納された基本反復子としてを返します。
make_unchecked_array_iterator 他のアルゴリズムで使用できる unchecked_array_iterator を作成します。 注: この関数は、標準 C++ ライブラリの Microsoft 拡張機能です。 この関数を使用して実装されたコードは、この Microsoft 拡張機能をサポートしていない C++ Standard ビルド環境には移植できません。
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++ Standard ビルド環境には移植できません。
forward_iterator_tag 前方反復子を表す iterator_category 関数の戻り値の型を提供するクラス。
front_insert_iterator このクラス テンプレートは、出力反復子オブジェクトを表します。 これは、Container 型のコンテナーに要素を挿入します。これには、これが格納するコンテナーと呼ばれる保護された pointer オブジェクトを介してアクセスします。
input_iterator_tag 入力反復子を表す iterator_category 関数の戻り値の型を提供するクラス。
insert_iterator このクラス テンプレートは、出力反復子オブジェクトを表します。 これは、Container 型のコンテナーに要素を挿入します。これには、これが格納するコンテナーと呼ばれる保護された pointer オブジェクトを介してアクセスします。 また、iter というクラス Container::iterator の保護された iterator オブジェクトも格納します。
istream_iterator このクラス テンプレートは、入力反復子オブジェクトを表します。 入力ストリームからクラス Ty のオブジェクトを抽出します。このオブジェクトは、 basic_istream<Elem, Tr>へのポインター型の、格納するオブジェクトを介してアクセスします。
istreambuf_iterator このクラス テンプレートは、入力反復子オブジェクトを表します。 クラス Elemの要素を出力ストリーム バッファーに挿入します。このバッファーは、basic_streambuf<Elem, Tr>pointer型の、格納するオブジェクトを介してアクセスします。
iterator このクラス テンプレートは、すべての反復子の基本型として使用されます。
iterator_traits 同じ方法で参照できるように、別の反復子の型に関連付けられているクリティカルな型を指定するテンプレート ヘルパー クラス。
move_iterator move_iterator オブジェクトには、型 RandomIterator のランダム アクセス反復子が格納されています。 これは、逆参照された場合を除いて、ランダム アクセス反復子と同じように動作します。 operator* の結果は value_type&&: に暗黙的にキャストされ、rvalue reference が作成されます。
ostream_iterator このクラス テンプレートは、出力反復子オブジェクトを表します。 クラスTypeのオブジェクトを出力ストリームに挿入します。出力ストリームは、basic_ostream<Elem, Tr>pointer型の、格納するオブジェクトを介してアクセスします。
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++ Standard ビルド環境には移植できません。

概念

std名前空間では、次の概念が定義されています。 これらは反復子に適用され、 <ranges> の概念で説明されている範囲の反復子カテゴリにも関連します

反復子の概念 説明
bidirectional_iteratorC++20 前方と後方の両方を読み書きできる反復子を指定します。
contiguous_iteratorC++20 メモリ内の要素がシーケンシャルであり、同じサイズで、ポインターの算術演算を使用してアクセスできる反復子を指定します。
forward_iteratorC++20 複数回読み取り (および場合によっては書き込み) できる反復子を指定します。
input_iteratorC++20 少なくとも 1 回から読み取ることができる反復子を指定します。
input_or_output_iteratorC++20 反復子の概念分類の基礎。
output_iterator 書き込み可能な反復子を指定します。
random_access_iteratorC++20 インデックスで読み書きできる反復子を指定します。
sentinel_forC++20 反復子型のセンチネルを指定します。
sized_sentinel_forC++20 反復子とそのセンチネルを ( - を使用して) 減算して、定数時間の差を見つけることを指定します。

関連項目

ヘッダー ファイル リファレンス
C++ 標準ライブラリ内のスレッド セーフ
C++ 標準ライブラリ リファレンス