上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
1.4 set、multiset(集合、多重集合)
STL提供了4种关联容器:set、multiset、map、multimap,其中,set是集合,multiset是多重集合。关联容器将值和键关联在一起,通过键来查找值。这4种关联容器都是可反转且经过排序的,不可以指定插入位置,可提供对元素的快速访问,内部用红黑树实现。
集合是有序的,其中的每个键都是唯一的,其键和值是统一的,值就是键,不允许重复。多重集合也是有序的,其中的每个键都是唯一的,但允许多个值的键相同。用set或multiset时,需要引入头文件#include<set>。
集合、多重集合的迭代器为双向访问,不支持随机访问。执行一次“++”和“--”操作的时间复杂度均为 O(logn)。默认的元素排序方式为升序排序,也可以通过模板的第2个参数设置为降序排序。
set、multiset的成员函数如下。
· size()、empty()、clear():返回元素数量、判断是否为空、清空。
· begin()、end():返回开始位置、返回结束位置。
· insert(x):将x插入集合。
· erase(x):删除所有等于x的元素。
· erase(it):删除it迭代器指向的元素。
· find(x):查找x在集合中的位置,若不存在,则返回尾指针。
· count(x):统计等于x的元素的数量。
· lower_bound(x)、upper_bound(x):返回第1个大于或等于x的元素的位置、返回第1个大于x的元素的位置。