只有key值,自动根据key值排序,不允许有相同的键值
只读容器,改变元素会破坏set的组织
multiset允许key值重复.
set和multiset底层是红黑树,平衡二叉树的一种
平衡二叉树(红黑树)
1.任何节点的值都大于左树所有值,小于右树所有值,因此总根节点一直往左走,到尽头得到最小值(插入排序也是如此)
2.平衡()左树和右树的深度差值不大于1
构造函数
方法 | 说明 |
---|---|
set st; | set默认构造函数: |
mulitset mst; | multiset默认构造函数: |
set(const set &st); | 拷贝构造函数 |
API
方法 | 描述 |
---|---|
set& operator=(const set &st); | 重载等号操作符 |
swap(st); | 交换两个集合容器 |
size(); | 元素个数 |
empty(); | 是否为空 |
insert(elem);//在容器中插入元素。
clear();|清除所有元素
erase(pos);|删除pos迭代器所指的元素,返回下一个元素的迭代器。
erase(beg, end);|删除区间[beg,end)的所有元素 ,返回下一个元素的迭代器。
erase(elem);|删除值为elem的元素。
find(key);|查找键key是否存在,若存在,返回该键的元素的迭代器;若不存在,返回set.end();
count(key);|查找键key的元素个数
lower_bound(keyElem);|第一个key>=keyElem元素的迭代器。
upper_bound(keyElem);|第一个key>keyElem元素的迭代器。
equal_range(keyElem);|容器中key与keyElem相等的上下限的两个迭代器。