set是一个集合容器,其中所包含的元素是唯一的,集合中的元素按一定的顺序排列,不可以直接存取元素
在插入操作和删除操作上比vector快。
不可以直接修改set或multiset容器中的元素值,必须先删除原有的元素,再插入新的元素。
multiset与set的区别:set支持唯一键值,每个元素值只能出现一次;而multiset中同一值可以出现多次。
引入set、multiset:#include <set>
默认构造:set<T> setT、multiset<T> multisetT
遍历(迭代器):
set.begin() 返回容器中第一个数据的迭代器
set.rbegin() 返回容器中倒数第一个元素的迭代器
set.end() 返回容器中最后一个数据之后的迭代器
set.rend() 返回容器中倒数最后一个元素的后面的迭代器
插入:
set.insert(elem) 在容器中插入元素
set<int,less<int>> setIntA 该容器是按升序方式排列元素
set<int,greater<int>>setIntB 该容器是按降序方式排列元素
大小和判空:
set.size() 返回容器中元素的数目
set.empty() 判断是否为空
删除:
set.clear() 清空容器
set.erase(pos) 删除pos迭代器所指的元素,返回下一个元素的迭代器
set.erase(beg,end) 删除区间[beg,end)的所有元素 ,返回下一个元素的迭代器
set.erase(elem) 删除容器中值为elem的元素
查找:
set.find(elem) 查找elem元素,返回指向elem元素的迭代器
set.count(elem) 返回容器中值为elem的元素个数
set.lower_bound(elem) 返回第一个>=elem元素的迭代器
set.upper_bound(elem) 返回第一个>elem元素的迭代器
set.equal_range(elem) 返回容器中与elem相等的上下限的两个迭代器(上闭下开)