STL コンテナー
標準テンプレート ライブラリは (STL)関連するオブジェクトのコレクションを格納するために複数のコンテナーを提供します。コンテナーはすべてのテンプレート クラスではオブジェクトがコンテナーで許可されるかを指定できるようにします。このトピックではコンテナーが必要に最適な方法を決定できるようにSTL コンテナーの概要について説明します。
取得元の 2 種類の STL ライブラリがあります : ネイティブ STL と STL/CLR。STL/CLR の詳細についてはSTL/CLR ライブラリの参照 を参照してください。
STL コンテナーは 3 種類シーケンス コンテナー連想コンテナーおよびコンテナーのアダプターに分割できます。これらのカテゴリおよび各カテゴリに属するコレクションを次に示します。詳細についてはコンテナーのリファレンス ドキュメントを参照してください。
シーケンス コンテナー
シーケンス コンテナーに挿入される要素の元の順序が維持されます。これはコンテナー要素を挿入する位置を指定することができます。
deque (ような理由がキュー) のコンテナーはコンテナーの先頭と末尾に高速な挿入と削除ができます。また任意の要素をすばやくアクセスできます。
コンテナーがの高速な挿入と削除を list のコンテナーを使用する場所で任意のコンテナー要素にアクセスできません。
vector のコンテナーは配列のように動作しますが必要に応じて自動的に拡張されます。
シーケンス コンテナーの詳細については次の表を参照してください :
[コンテナー] |
ネイティブ STL |
STL/CLR |
---|---|---|
deque |
||
list |
||
vector |
連想コンテナー
連想コンテナーの特徴は要素は定義済みの順序に挿入することです。並べ替えられた順など)。
連想コンテナーは2 種類のサブセットにグループ化できます : マップを設定します。このディクショナリとも呼ばれます map はキーと値のペアで構成されます。キーがシーケンスの順序を指定するために使用される値はそのキーによって把握して関連付けられます。たとえばmap はWord がテキストに実行された回数を表すテキストの一意の単語を表すキーと値を含むことがあります。set は一意の要素の上のコンテナーです。
コンテナーに挿入する map と set キーの割り当てが両方の 1 個のインスタンスまたは要素。要素の複数のインスタンスが必要な場合はmultimap または multiset を使用します。
両方のマップと設定のサポートの双方向の反復子。反復子の詳細については反復子 を参照してください。
数式に検索時間を短縮するに STL の標準の一部 hash_mapおよび hash_set がよく使用されることです。これらの要素はコンテナーの双方向リンク リストを含みます。各テーブル エントリがハッシュ テーブルとして要素を格納します。要素のハッシュ アルゴリズムが均等に分配されたハッシュ値を返すように最も高速検索時間を確認するには確認します。
連想コンテナーの詳細については次の表を参照してください :
[コンテナー] |
ネイティブ STL |
STL/CLR |
---|---|---|
hash_map |
||
hash_multimap |
||
hash_multiset |
||
hash_set |
||
map |
||
multimap |
||
multiset |
||
set |
コンテナーのアダプター
コンテナーのアダプターは上のコンテナーのバリエーションです。コンテナーのアダプターは反復子がサポートされていません。
priority_queue のコンテナーが最大値を持つ要素が 1 番目のキュー常に false になるようにを構成します。
queue コンテナーは先入れ先出し (FIFO) のセマンティクスに従います。キューに押す () は1 番目の挿入削除する最初の要素です (操作で複数鳴らされる)。
stack コンテナーは後入れ先出し (LIFO)まず最後のセマンティクスに従います。スタックにプッシュされる) (挿入する最後の要素が削除される最初の要素です (操作で複数鳴らされる)。
コンテナーのアダプターが反復子がサポートされていないためSTL アルゴリズムと使用できません。アルゴリズムの詳細についてはアルゴリズム を参照してください。
コンテナーのアダプターの詳細については次の表を参照してください :
[コンテナー] |
ネイティブ STL |
STL/CLR |
---|---|---|
priority_queue |
||
queue |
||
stack |
コンテナー要素の要件
STL コンテナーに挿入される要素はパブリックなコピー コンストラクターデストラクターおよび長期間のパブリックな代入演算子を指定するオブジェクトの種類です。デストラクターは例外がスローされることがあります。さらにset のような連想コンテナーと map はで定義された既定ではパブリックである operator< の比較演算子が必要です。コンテナーの操作はパブリックな既定のコンストラクターとパブリックな等価演算子を必要とする場合があります。
コンテナー要素にアクセスできます。
コンテナー要素には反復子を使用してアクセスします。詳細については、「反復子」を参照してください。
[!メモ]
またSTL コレクションを反復処理するために 各について、 を使用できます。詳細については、「方法: それぞれのの STL のコレクションを反復処理します」を参照してください。