C ++ STLの一般的な操作セットの記事

C ++ STLの一般的な操作セットの記事


前書き:

#include<set>

1.ユニークな要素

2.並べ替え

Setは、C ++でよく使用されるコンテナーでもあり、setはコレクションです。セットはコレクションであるため、もちろんその内部要素は一意です(コレクションの再現性はありません)。セット内の要素は引き続き並べ替えられます。セットは、マップと同様に、赤黒木に基づくデータ構造です。

1.構造

set<int> s;
s.insert(3);
s.insert(2);
s.insert(4);
s.insert(1);
s.insert(1);
s.insert(1);
for (auto it = s.begin(); it != s.end(); ++it)
	cout << *it << endl;

ここに画像の説明を挿入

構築されたセットsにintデータ3、2、4、1、1、1を挿入した後、トラバーサル出力の結果は1、2、3、4であることがわかります。これは、セットが重複要素を許可せず、ソートされていることも示しています。

2.一般的に使用される機能

set<int> s;
s.insert(3);
s.insert(2);
s.insert(4);
s.insert(1);
cout << *s.begin() << endl;				//返回set的第一个元素的迭代器
cout << *(--s.end()) << endl;			//返回set最后一个元素后面一个位置的迭代器
if (s.empty())							//判断set是否为空
	cout << "is empty" << endl;
else
	cout << "is not empty" << endl;
cout << s.size() << endl;				//输出set此时的元素个数
s.clear();								//清空,删除所有元素
cout << s.size() << endl;

演算結果:

ここに画像の説明を挿入


set<int> s;
s.insert(3);
s.insert(1);
s.insert(1);
cout << s.count(1) << endl;
cout << s.count(2) << endl;

ここに画像の説明を挿入

Countは、キー値の出現回数をカウントするために使用されます。セットとマップでは重複データを表示できないため、countの戻り値は0または1(セット内に存在するか存在しないか)のみになります。


set<int> s;
s.insert(3);
s.insert(2);
auto it = s.find(1);
if (it != s.end())
	cout << "YES" << endl;
else
	cout << "NO" << endl;
it = s.find(3);
if (it != s.end())
	cout << "YES" << endl;
else
	cout << "NO" << endl;

ここに画像の説明を挿入

find関数は、検索する必要のある要素のイテレーターを返すか、存在しない場合はend()を返します。

3.削除

#include<iostream>
#include<set>
using namespace std;
int main() {
    
    
	set<int> s;
	s.insert(3);
	s.insert(2);
	s.insert(4);
	s.insert(1);
	s.insert(1);
	for (auto it = s.begin(); it != s.end(); ++it)
		cout << *it << endl;
	cout << "**********" << endl;

	s.erase(1);						//给定key值的删除
	for (auto it = s.begin(); it != s.end(); ++it)
		cout << *it << endl;
	cout << "**********" << endl;

	s.erase(s.begin());				//给定迭代器的删除
	for (auto it = s.begin(); it != s.end(); ++it)
		cout << *it << endl;
	cout << "**********" << endl;
	
	s.erase(s.begin(), s.end());	//给定迭代器返回的删除
	for (auto it = s.begin(); it != s.end(); ++it)
		cout << *it << endl;
	cout << "**********" << endl;
	return 0;
}

ここに画像の説明を挿入

最初、セット内の要素は1、2、3、4です。指定されたキー1で要素を削除した後、セット内の要素は2、3、4のままになり、指定されたイテレーターセットの最初の要素が削除されます。 。位置に対応する要素(2)の後に、3と4が残ります。指定されたイテレータ範囲(最初から最後まで)の要素を削除すると、セットに要素がなくなります。


一般的な操作を設定する

問題があれば訂正してください!

おすすめ

転載: blog.csdn.net/qq_45985728/article/details/112791689