set笔记
set函数用来去重加排序,非常的方便
set(集合)
1. 介绍
set容器中的元素不会重复,当插入集合中已有的元素时,并不会插入进去,而且set容器里的元素自动从小到大排序。
即:set里面的元素不重复 且有序
2. 函数方法
代码 含义
s.begin() 返回set容器的第一个元素的地址(迭代器)
s.end() 返回set容器的最后一个元素的下一个地址(迭代器)
s.rbegin() 返回逆序迭代器,指向容器元素最后一个位置
s.rend() 返回逆序迭代器,指向容器第一个元素前面的位置
s.clear() 删除set容器中的所有的元素,返回unsigned int类型O(N)
s.empty() 判断set容器是否为空
s.insert() 插入一个元素
s.size() 返回当前set容器中的元素个数O(1)
erase(iterator) 删除定位器iterator指向的值
erase(first,second) 删除定位器first和second之间的值
erase(key_value) 删除键值key_value的值
查找
s.find(元素) 查找set中的某一元素,有则返回该元素对应的迭代器,无则返回结束迭代器
s.lower_bound(k) 返回大于等于k的第一个元素的迭代器
s.upper_bound(k) 返回大于k的第一个元素的迭代器
运用lower_bound:
可以插入几个比较大和比较小的数,以防返回其他值
s.insert(192608170),s.insert(-192608170);
然后由于返回的是迭代器,所以使用智能指针:
auto x=s.lower_bound(a[i]); if(*x!=a[i]){ auto k=x; k--; num+=min(abs(*x-a[i]),abs(*k-a[i])); }

浙公网安备 33010602011771号