一句话理解
set 是有序不重复集合。
为什么要学
需要自动排序、去重、查某数在不在时用。
讲解
s.insert(x); s.count(x); s.erase(x); 有序遍历。内部是平衡树,操作大约 log n。
重复值不会出现第二次。要重复用 multiset。
例子
set<int> s;
s.insert(3);
s.insert(3);
s.insert(1);
cout << s.size();
输出:
2
3 只留一次,再加上 1,大小是 2。
常见错误
- 当数组按下标 s[i] 访问(set 没有随机下标)。
- 每轮用 vector+sort 去重却还能用 set 更合适时,要看常数和需求。