set stl
簡単な例を使用して、STLでSETをすばやく学習します。
このチュートリアルでは、STLコンテナ–セットについて詳しく見ていきます。セットは、特定の順序で一意の要素を持つ連想コンテナです。
セット内の要素の値は、その要素にアクセスするために使用されるキーでもあります。セット内のすべての要素は一意である必要があります。セット内の要素は、一度挿入すると変更できません。ただし、要素を挿入または削除することはできます。
=> 完全なC ++無料トレーニングシリーズについては、こちらを確認してください。
学習内容:
STLで設定
setを実装するには、プログラムにヘッダーを含める必要があります。
ソフトウェアテスト面接の質問と回答のドキュメント
#include
セットは次のように宣言できます。
set myset;
例えば、整数型の要素のセットmysetが必要な場合は、セットを次のように宣言できます。
set myset;
セットでの操作
セットコンテナは、すでに説明したマップのような同様の操作もサポートします。以下は、setでサポートされている基本的な操作の一部です。
- ベギン :イテレータをセットの最初の要素に戻します。
- 終わり :セットの最後の要素に続く要素にイテレータを返します。
- インサート :セットに新しい要素を挿入します。
セットの挿入操作には、次の3つのバリエーションがあります。
-
-
- insert(element): これにより、要素がセットに直接挿入され、セットが並べ替えられます。
- insert(position、hint): ここでは、要素を挿入する位置を指定します。
- insert(iterator.begin()、iterator.end()): このバリエーションでは、配列や別のセットのように、範囲をセットに直接挿入できます。
-
- 消去 :セットから要素を削除します。
- サイズ :セットのサイズを返します。
- max_size :セットが保持できる最大サイズを返します。
- 空の :セットが空かどうかを返します。
- 晴れ :セットからすべての要素を削除します。
- 見つける :セット内の要素を検索します。要素が見つかった場合は、セット内のその要素にイテレータを返します。見つからない場合は、セットの最後にイテレータを返します。
以下に示すのは、SETのいくつかの重要な機能の使用法を示すプログラムです。
#include #include #include using namespace std; int main() { set myset; myset.insert(140); myset.insert(130); myset.insert(160); myset.insert(120); cout<<'
Size of myset: '< 出力:
mysetのサイズ:4
セットのmysetは次のとおりです:120 130 140 160
100を挿入した後、設定されたmysetは次のようになります:100 120 130 140 160
配列arrを挿入した後、設定されたmysetは次のようになります:100 110 120 130 140 150 160
130未満の要素を削除した後、myset:130 140 150 160

上記の出力に示されているように、単純な挿入関数を使用してセットを作成します。
次に、イテレータ参照と要素値100を渡すことにより、挿入関数の別のバリアントを使用して要素100をセットに挿入します。挿入が完了すると、セットが並べ替えられ、要素の順序が維持されることがわかります。
次に、挿入関数を使用して配列{110,150,150}を挿入します。配列を挿入した後に表示されるセット出力を見ると、150の値が1つだけセットに入力されていることがわかります。これは、セット内のすべての要素が一意であるためです。
セットのサイズも表示します。次に、find関数を使用して、130未満の要素を検索し、erase関数を呼び出してこれらの要素を削除します。次に、結果のセットを表示します。
これはすべてセットコンテナに関するものです。次に、セットコンテナの拡張であるマルチセットについて説明します。
マルチセット
マルチセットは、1つの違いを除いて、すべての面でセットと同様の連想コンテナです。つまり、複数の要素が同じ値を持つことができます。
マルチセットの宣言は次のとおりです。
multiset mset;
整数要素の多重集合は、次のように宣言できます。
マルチセットmset;
マルチセットでサポートされているさまざまな操作は、セットでサポートされている操作と似ています。
次に、使用する操作を示すマルチセットの例について直接説明します。
ウォークラフトプライベートサーバーの新しい世界
#include #include #include using namespace std; int main() { multiset myset; myset.insert(11); myset.insert(13); myset.insert(13); myset.insert(10); cout<<'
Size of myset: '< 出力:
mysetのサイズ:4
4つの要素を挿入した後、マルチセットmysetは次のようになります。101113
13
15を挿入した後、マルチセットmysetは次のようになります。101113 13 15
15未満の要素を削除した後、myset:15
出力のスクリーンショットを以下に示します。

上記の出力に示されているように、最初にマルチセットに4つの要素を入力し、そのうち2つは同じです。ただし、セットとは異なり、これらの要素はマルチセットに正常に挿入されます。次に、正常に挿入されたイテレータを介して位置を提供することにより、別の要素15を挿入します。
次に、マルチセットで15未満の要素を見つけ、これらの要素で消去関数を呼び出します。最後に、マルチセットを表示します。
順不同セット
これまで、このチュートリアルではセットとマルチセットについて説明してきました。
セットは一意のキーの順序付けられたシーケンスですが、「順序付けられていないセット」と呼ばれる別の関連付けコンテナがあります。これは、任意の順序で格納されるキーまたは要素のセットです。これは、順序付けされていないセットの要素が「順序付けされていない」ことを意味します。
順序付けされていないマップと同様に、順序付けされていないセットも、キーがハッシュテーブルのインデックスにハッシュされるハッシュテーブルを使用して実装されます。ハッシュテーブルを使用しているため、バランスの取れたツリー構造を使用するセットとは対照的に、要素の順序を維持することはできません。
順序付けられていないセットを実装するためのヘッダーはです。
#include
整数型の順序付けられていないマップを次のように宣言します。
Unordered_set uset;
unordered_setでサポートされている操作は、マップのチュートリアルで説明されているunordered_mapでサポートされている操作と似ています。
以下に示すのは、unordered_setに対するさまざまな操作を示す例です。
#include #include using namespace std; int main() { unordered_set uset; unordered_set :: iterator it; for(int i=0;i<5;i++){ uset.insert(i+2); } cout<<'
Size of uset: '< 出力:
使用サイズ:5
順序付けられていないセットの要素は次のとおりです。993965 26 4 3 13 2
見つかったキー= 13
umapbucket_count:11
バケットサイズ:2
上記の出力のスクリーンショットを以下に示します。

上記の出力に示されているように、最初に順序付けされていないセットに5つの要素を挿入し、次に挿入関数のバリエーションの使用法を示す別の4つの要素を挿入します。次に、順序付けされていないセットの内容を表示します。
次に、find関数を使用して、key = 13が順序付けられていないセットに存在するかどうかを調べます。
この後、さらに2つの関数「bucket_count」と「bucket_size」を示します。これらの関数は、順序付けされていないマップの内部実装に関連しています。
このコンテナーは、他のSTLコンテナーと同様に、他のイテレーター関数およびmax_size、clear、erase、emptyなどの関数もサポートします。
結論
これで、STLのSETに関するチュートリアルは終了です。
このSTLチュートリアルの一部として取り上げられているトピックが、STLとそのさまざまなコンテナーについて理解するのに役立つことを願っています。
アンドロイドのための最高の音楽ダウンローダーアプリ
=> ここで人気のあるC ++トレーニングシリーズを読んでください。
推奨読書
- STLの優先キュー
- STLのリスト
- STLのMAPS
- STLのスタックとキュー
- STLのイテレータ
- STLの配列
- STLの文字列、ペア、タプル
- STLのアルゴリズム