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が残ります。指定されたイテレータ範囲(最初から最後まで)の要素を削除すると、セットに要素がなくなります。
一般的な操作を設定する
問題があれば訂正してください!