#include
using std::set;
set可以实现内部自动有序且不含重复元素的容器
1.set的定义set
注意事项等同vector
2.set容器内元素的访问不同于vector,set内元素只能通过迭代器访问,并且不支持迭代器加整数的行为,如(it+i)i为整数这种写法是不允许的
遍历方式只能是
for(set::iterator it=si.begin();it!=si.end();it++) cout<<*it< 注意:迭代器不支持it
3.set常用函数解析 (1)insert() insert(x)将x插入set容器中,并自动递增排序和去重,时间复杂度为O(logn),n为set中元素个数
(2)find()find(value)返回对应值为value的迭代器,时间复杂度为O(logn),n为set中元素个数
set(3)erase()::iterator it=set.find(3);//返回对应值为3的迭代器 ①si.erase(it),it为待删除元素的迭代器。时间复杂度为O(1),可结合find()使用
si.erase(si.find(200));//删除值为200的元素,erase为O(1),find为O(logn)②si.erase(value),value为一个值。删除值value的元素,时间复杂度O(logn)
si.erase(200);//删除值为200的元素,时间复杂度O(logn)③si.erase(first,last),删除[first,last)左闭右开区间的元素,时间复杂度O(last-first)
set(4)size()::iterator it=si.find(30); si.erase(it,si.end()); 时间复杂度O(1)
(5)clear()时间复杂度O(n)
4.常见用途自动去重并升序排序
如果需要使用不去重的情况,使用multiset
如果需要使用不排序的情况,使用unordered_set(速度远高于set)



