目录
1.set简介
2.插入数据
3.删除数据
4.其它常用方法
1.set简介
set
是 C++ 标准库中的一个容器,属于关联容器的一种。它是一个有序集合,其中的元素是唯一的,即每个元素只能在集合中出现一次。set
是基于红黑树实现的,这使得插入、删除和查找操作的时间复杂度都是 O(log n)。
2.插入数据
使用insert(i)
set<int> s;s.insert(1);s.insert(3);
3.删除数据
使用erase()删除某一个值
set<int> s;s.insert(1);s.insert(3);s.insert(7);s.insert(5);s.erase(s.begin()); //通过迭代器删除s.erase(5); //删除指定值
使用clear()清空所有值
set<int> s;s.insert(1);s.insert(3);s.insert(7);s.insert(5);s.clear(); //清空
4.其它常用方法
(1)empty() 判断是否为空
set<int> s;s.insert(1);s.insert(3);s.insert(7);s.insert(5);cout<<s.empty(); //不为空,输出0
(2)size() 返回集合中值的个数
set<int> s;s.insert(1);s.insert(3);s.insert(7);s.insert(5);cout<<s.size(); //输出4
(3)迭代器
set<int> s;s.insert(1);s.insert(3);s.insert(7);s.insert(5); //set会默认升序排列 for(set<int>::iterator it=s.begin();it!=s.end();it++) //输出1 3 5 7 {cout<<*it<<' ';}
(4)count()计数,因为set中没有重复元素,所以count(n)只能为0或1
set<int> s;s.insert(1);s.insert(1);s.insert(5); //set会默认升序排列 cout<<s.count(1)<<endl; //即使插入两次也只有一个1,输出1 cout<<s.count(2)<<endl; //没有2,输出0
(5)lower_bound(key_value) ,返回第一个大于等于key_value的值; upper_bound(key_value),返回最后一个大于等于key_value的值
set<int> s;s.insert(1);s.insert(1);s.insert(5); //set会默认升序排列 cout<<*s.lower_bound(1)<<endl; //输出1 cout<<*s.upper_bound(1)<<endl; //输出5
(6)swap() 交换两个set集合
set<int> s,s2;s.insert(1);s.insert(3);s.insert(5); //set会默认升序排列 s2.insert(2);s2.insert(4);s.swap(s2);for(set<int>::iterator it=s.begin();it!=s.end();it++) //输出2 4 {cout<<*it<<' ';}cout<<endl;for(set<int>::iterator it=s2.begin();it!=s2.end();it++) //输出1 3 5 {cout<<*it<<' ';}