set 在set中每个元素的值都唯一,而且系统能根据元素的值自动进行排序。(从小到大 greater)
0 准备
#include<set>
1.initialize & assignment
set用数组初始化,并遍历。
int a[5]= { 1,6,3,3,5 };
set<int> temp(a,a+5);
res:1 3 5 6
set<int> s;
2. operator
操作无非就是增删查改。
2.1 add
s.insert(1)
2.2 delete
s.clear() //清空
//erase
auto fir = s.begin();
auto sec = s.begin();
sec ++;
sec ++;
sec ++;
s.erase(fir, sec); //erase [0,3)
s.erase(7);
res: 345689
2.3 query
s.empty() //空为true,不空为false
s.max_size() //可能包含的元素最大个数
s.size() //当前元素数
s.begin()
s.end() //return pos
e.g.
s.insert(1); s.insert(5); s.insert(3);
cout<<*s.begin();
auto i = s.end(); //auto = set<int>::iterator
i--;
cout << *i;
res:1 5
s.find()
int a[] = { 1,7,3 };
set<int> s(a, a + 3);
set<int>::iterator it;
if ((it = s.find(7)) != s.end())
cout << *it;
res:7
s.lower_bound(); //返回第一个 >= 参数的位置
s.upper_bound(); //返回最后一个 >= 参数的位置(set中最大的)
int a[] = { 1,4,7 };
set<int> s(a, a + 3);
cout << *s.lower_bound(2);
cout << *s.lower_bound(4);
cout << *s.upper_bound(4);
res:447
2.4 change
2.4 change
3. 常见写法
3.1 traverse
for (set<int>::iterator it = temp.begin(); it != temp.end(); it++)
cout << *it << endl;