C++ の STL コンテナとは

C No Stl Kontenatoha



C++、STL(標準テンプレートライブラリ)では、 コンテナ 他のオブジェクトのコレクションを保存するために使用されるオブジェクトです。これらはクラス テンプレートと同様に機能し、多数の要素タイプをサポートし、要素に直接またはイテレータ経由でアクセスするためのメンバー関数を提供します。

C++ STL コンテナの種類

C++ には 3 種類の STL があります。 コンテナ 、以下にリストされています。







1: 連続コンテナ

C++ では、シーケンシャル コンテナーを使用して、シーケンシャルに取得できる項目を格納できます。これらは コンテナ データ構造の配列またはリンクされたリストとしてエンコードされます。いくつかのタイプの順次コンテナーを以下に示します。



  • ベクター: これは、メモリに連続的に格納される、動的にサイズ変更される配列です。
  • 何について: これは、挿入と削除の両方の操作をサポートする両端キューを表します。
  • 配列: これは、コンパイル中にサイズが固定されたまま割り当てられる静的配列です。
  • リスト: これは、リスト内の任意の場所で要素の挿入と削除を高速に実行する二重リンク リストです。
  • 転送リスト: これはリストと同様に単一リンクのリストですが、一方向にしかトラバースできません。



この例では、 ベクトルクラス どのようにして 一連 容器 動作します。





#include
#include <ベクター>
名前空間 std を使用します。
整数メイン ( ) {
// int のベクトルを初期化する タイプ
ベクター < 整数 > 数字 = { 10 2 16 70 5 } ;
// ベクトルを印刷する
コート << 「数字は次のとおりです。」 ;
ために ( 自動 & 私:数字 )
{
コート << << '、' ;
}
戻る 0 ;
}

上記のコードは、次の使用法を示しています。 一連 コンテナ ベクトル形式で、整数配列の保存が可能になります。プログラムは、整数型のベクトルを初期化し、それに値を割り当て、ループを使用してそれらを出力します。この例では、 シーケンシャルコンテナ



2: 連想コンテナ

連想コンテナ 比較演算子で定義された特定の順序で要素を格納できるようになります。ようではない 連続コンテナ 、要素の順序 連想コンテナ ユーザーが要素を整理してアクセスできるようにするキーを使用して維持されます。要素が挿入されると、 連想コンテナ 、キーに基づいて正しい位置に自動的に並べ替えられます。これらのタイプのコンテナは、バイナリ ツリー データ構造と同様に内部的に実装されます。

連想的な コンテナ 次のように分類されます。

  • 地図: 一意のキーを使用して並べ替えられたキーと値のペアのコレクション
  • マルチマップ: キーを使用してソートされたキーと値のペアのコレクション
  • 設定: キーごとに収集および配置された固有のキー。
  • マルチセット: キーを使用してソートされたキーのコレクション

どのようにして 連想的な 容器 動作する場合は、を使用します クラスを設定する この例では。

#include
#include <セット>
名前空間 std を使用します。
整数メイン ( )
{
// を初期化する 設定 整数の タイプ
設定 < 整数 > 数字 = { 10 2 16 70 5 } ;
// を印刷します 設定
コート << 「数字は次のとおりです。」 ;
ために ( 自動 & 私:数字 )
{
コート << << '、' ;
}
戻る 0 ;
}

上記のコードは、C++ で整数のセットを初期化します。これは連想コンテナーの例です。このセットにより、デフォルトで要素が確実に昇順に並べ替えられます。次に、コードは for ループを使用してセット内の数値を出力します。

3: 順序付けられていない連想コンテナ

C++では、 順序なし結合 コンテナ の未ソートバージョンを提供するために使用されます。 連想的な 容器 。これらはハッシュ テーブル データ構造と同様に内部的に実装されます。の 連想的な コンテナ 次のように分類されます。

  • 順序なしマップ: 一意のキーを使用してハッシュされたキーと値のペアのコレクション。
  • 順序なしマルチマップ: キーを使用してハッシュされたキーと値のペアのコレクション。
  • 順序なしセット: キーを使用してハッシュされた一意のキーのコレクション。
  • 順序付けされていないマルチセット: キーを使用してハッシュされたキーのコレクション。

どのようにして 順序なし結合 容器 動作する場合は、を使用します 順序なしセット この例ではクラス。

#include
#include
名前空間 std を使用します。
整数メイン ( )
{
// int の unowned_set を初期化する タイプ
順序なしセット < 整数 > 数字 = { 10 2 16 70 5 } ;
// を印刷します 設定
コート << 「数字は次のとおりです。」 ;
ために ( 自動 & 私:数字 )
{
コート << << '、' ;
}
戻る 0 ;
}

結論

STL C++ 容器 他のオブジェクトのコレクションを保存するためのホルダー オブジェクトです。これらはクラス テンプレートと同様に機能し、多数の要素タイプをサポートします。このチュートリアルでは、最も一般的に使用される STL C++ コンテナのタイプについて説明しました。 連続コンテナ、連想コンテナ としても 順序付けされていない連想コンテナ