ホームページ  >  記事  >  バックエンド開発  >  C++_STL の一般的なコンテナの概要: ペアの連想コンテナと順次コンテナ

C++_STL の一般的なコンテナの概要: ペアの連想コンテナと順次コンテナ

php是最好的语言
php是最好的语言オリジナル
2018-07-28 11:31:122317ブラウズ

グループ ペア

このパートでは、最初にペア グループ ペア内の関連コンテナと連続コンテナの共通操作を紹介し、次に共通の操作を紹介します。いくつかの特定の関連コンテナ。

1. 連想コンテナ

連想コンテナは、キーによる効率的なクエリをサポートするストレージ オブジェクト コレクションの一種です。連想コンテナの動作のほとんどは、順次コンテナの動作と同じです。この 2 つの本質的な違いは、連想コンテナはキーによって要素を格納および読み取りするのに対し、順次コンテナはコンテナ内の位置によって要素を順次に格納およびアクセスすることです。
関連付けられたコンテナの各要素には、キーと実際の値が含まれます。要素が連想コンテナに挿入されると、コンテナの内部データ構造は、キー値のサイズに基づく特定のルールに従って、要素を適切な場所に配置します。連想コンテナには、いわゆる先頭と末尾はなく、最大の要素と最小の要素のみがあり、front、push_front、pop_front、back、push_back、pop_back の操作は提供されません。
標準 STL 連想コンテナは、set (セット) とマップ (マッピング)、およびその派生の multiset (マルチキー セット) と multimap (マルチキー マッピング テーブル) の 2 つのカテゴリに分類されます。これらのコンテナの基礎となるメカニズムはすべて RB ツリー (赤黒ツリー) に実装されています。

2. 連想コンテナと順次コンテナの共通操作

1. 連想コンテナと順次コンテナで共有されるコンストラクタ

連想コンテナは順次コンテナの操作のほとんどを共有しますが、すべての連想コンテナーが次の 3 つのコンストラクターを使用できるわけではありません。

C<T> c;
  • 1

c という名前の空のコンテナーを作成します。 C はコンテナの型名 (vector など)、T は要素の型 (int や string など) です。すべてのコンテナで動作します。

C<T> c(c2);
  • 1

コンテナ c2 のコピー c を作成します。c と c2 は同じコンテナ タイプを持ち、同じタイプの要素を格納する必要があります。 。すべてのコンテナで動作します。

C<T> c(b, e);
  • 1

反復子 b と e で識別される範囲内の要素のコピーを要素とする c を作成します。すべてのコンテナで動作します。

2. 連想コンテナと順次コンテナで共有されるその他の機能

  1. 連想コンテナは、キーに対応する値をコンテナのサイズで定義できないため、コンテナのサイズによって定義することはできません。それは何ですか。

  2. 連想コンテナは、順次コンテナのいくつかの関係演算子をサポートします。

  3. 関連付けられたコンテナは、begin、end、rbegin、および rend 操作をサポートします。

  4. 連想コンテナはスワップ操作と代入操作をサポートしますが、代入機能は提供しません。

  5. 関連付けられたコンテナはクリア関数と消去関数をサポートしますが、関連付けられたコンテナの消去操作は void 型を返します。

  6. 関連付けられたコンテナは、コンテナ サイズ操作として size()、max_size()、および empty() 関数をサポートしますが、resize() 関数はサポートしません。

3. ペア タイプによって提供される操作

ペア ペアには 2 つのデータ値が含まれます。具体的な使用法は次のとおりです:

pair<T1, T2> p1;
  • 1

2 つの要素がそれぞれ T1 型と T2 型である空のペア オブジェクトを作成します。値で初期化されます。

pair<T1, T2> p1(v1, v2);
  • 1

ペア オブジェクトを作成します。その 2 つの要素はそれぞれ T1 と T2 型で、最初のメンバーは v1 に初期化されます。 , 2 番目のメンバーは v2 に初期化されます。

make_pair(v1, v2);
  • 1

v1 と v2 の値を持つ新しいペア オブジェクトを作成します。その要素の型は v1 と v2 の型です。それぞれ。

p1 < p2;
  • 1

2 つのペア オブジェクト間の小なり演算、その定義は辞書の順序に従います: if p1.first< p2 .first または !(p2.first<p1.first)&&p1.sec<p2.second、true を返します。

p1 == p2;
  • 1

2 つのペア オブジェクトの最初のメンバーと 2 番目のメンバーが順番に等しい場合、2 つのオブジェクトは等しいことになります。演算では要素に == 演算子を使用します。

p.first、p.second;
  • 1

p の最初と 2 番目に指定されたパブリック データ メンバーを返します。

4. ペアの作成と初期化

ペア オブジェクトを作成するときは、2 つの型名を指定する必要があります。ペア オブジェクトの 2 つのデータ メンバーは、それぞれ 1 つに対応します。2 つの型名は、異なる場合があります。ペア オブジェクトの作成時に明示的な初期化が指定されていない場合は、デフォルトのコンストラクターが呼び出されてそのメンバーが初期化されます。オブジェクトの作成時に () を使用して初期化式を直接表示することもできます:
-pair

複数の同一のペア オブジェクトを使用する場合は、typedef を使用して宣言を簡素化することもできます:

typedef  pair <string, string>  Author;
Author 对象名(初始值1,初始值2);
  • 1

  • 2

ペア クラスの場合、そのデータ メンバーに直接アクセスできます。そのメンバーはすべてパブリックであり、それぞれ最初のメンバーと 2 番目のメンバーという名前が付けられます。これらは次を使用してアクセスできます。ドット演算子。

関連記事:

c STL標準コンテナでのイテレータの利用

c 検討ポイントまとめ z-12——STL文字列

##関連ビデオ:

C# チュートリアル

以上がC++_STL の一般的なコンテナの概要: ペアの連想コンテナと順次コンテナの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。