<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_iterator C++20 |
前方と後方の両方を読み書きできる反復子を指定します。 |
contiguous_iterator C++20 |
メモリ内の要素がシーケンシャルであり、同じサイズで、ポインターの算術演算を使用してアクセスできる反復子を指定します。 |
forward_iterator C++20 |
複数回読み取り (および場合によっては書き込み) できる反復子を指定します。 |
input_iterator C++20 |
少なくとも 1 回から読み取ることができる反復子を指定します。 |
input_or_output_iterator C++20 |
反復子の概念分類の基礎。 |
output_iterator |
書き込み可能な反復子を指定します。 |
random_access_iterator C++20 |
インデックスで読み書きできる反復子を指定します。 |
sentinel_for C++20 |
反復子型のセンチネルを指定します。 |
sized_sentinel_for C++20 |
反復子とそのセンチネルを ( - を使用して) 減算して、定数時間の差を見つけることを指定します。 |