目录
1.包含<set>头文件
#include<set>
2.set的创建与初始化
- set<T> s:创建一个空的集合
- set<T> s {n1, n2, ..., ni}:创建一个初始元素为n1,n2,...,ni的集合
- set<T> s {begin, end}:用迭代器创建集合
set<T[, cmp]>可以传入比较参数,对应于以上所有创建方式
#include<iostream>
#include<set>
#include<string>
using namespace std;
int main()
{
set<int> s1;
cout << s1.size() << endl; // 0
set<string> s2 {"aaa", "bbb", "ccc"};
cout << s2.size() << endl; // 3
set<string> s3 {++s2.begin(), s2.end()};
cout << s3.size() << endl; // 2
return 0;
}
3.set访问元素
- find():返回指定元素的迭代器,未找到返回结束迭代器
set中没有 at() 和 [ ] 下标访问 ,但可以使用 foreach 遍历
#include<iostream>
#include<set>
#include<string>
using namespace std;
int main()
{
set<string> s {"aaa", "bbb", "ccc"};
if (end(s) == s.find("bbb"))
cout << "bbb " << "not found!" << endl;
else
cout << "bbb " << "found!" << endl;
if (end(s) == s.find("ddd"))
cout << "ddd " << "not found!" << endl;
else
cout << "ddd " << "found!" << endl;
return 0;
}
/*
输出:
bbb found!
ddd not found!
*/
4.插入与删除
- insert():插入一个或多个元素
- emplace():在集合中生成一个或多个元素
- erase():删除一个或多个元素
- clear():清空集合
#include<iostream>
#include<set>
#include<string>
using namespace std;
int main()
{
set<int> s {1, 2}; // size: 2
// insert 插入单个元素
s.insert(3); // size: 3
// insert 插入多个元素
s.insert({4, 5}); // size: 5
// 使用迭代器插入
int t[] = {6, 7};
s.insert(begin(t), end(t)); // size: 7
// emplace 插入
s.emplace(8); // size: 8
// erase 删除指定元素
s.erase(2); // s: 1345678 size: 7
// erase 迭代器删除
s.erase(--end(s)); // s:134567 size: 6
// erase 迭代器删除多个
s.erase(++begin(s), --end(s)); // s: 17 size: 2
s.clear(); // size: 0
return 0;
}
这里只介绍了 set 的基础用法。
参考网址:C++ set容器(STL set容器)