set 集合

set 集合 有序的
multiset 多重集合 有序的

支持的操作:

不支持的操作

询问第k大值
询问一个值是第几大

priority_queue 能做的,set 都能做,但是 set 慢一些

C++ set = Java TreeSet (sorted set)
C++ unordered_set = Java HashSet
Python 用 SortedList 实现 C++ set 的功能

s.find(x)
如果 x 在 set 中,返回 iterator
如果不在 返回 s.end()

s.lower_bound(x) set 中 >= x 最小的
s.upper_bound(x) set 中 > x 最小的
如果存在,返回 iterator
如果不存在,那么返回 s.end()

如果 x 不在 s 中,那么 lower_bound 和 upper_bound 结果相同(不存在 == x 的位置)

--s.lower_bound(x) set 中 < x 最大的
--s.upper_bound(x) set 中 <= x 最大的
需要注意如果x已经是最小的数字,那么可能出错。

枚举

for (auto i: s)
{

}

加入

可以利用 insert 的返回值判断是否删除成功

删除

multiset 删除一个 要先 find 再 erase

  1. set 集合
    1. 支持的操作:
    2. 不支持的操作
  2. 枚举
  3. 加入
  4. 删除