概述
set容器
- 关于set
- set的特性
- set的使用
- set的模板参数列表
- set的构造
- set的迭代器
- set的容量
- set的修改操作
- multiset
- multiset的特性
- --以上--
包含头文件< set >
关于set
set是树型结构的关联式容器,底层是红黑树。(关联式容器也是存储数据的,只不过存储的是<key , value>结构的键值对,在数据检索时比序列式容器效率更高;树型结构的关联式容器主要有四种:map, set, multimap, multiset。)
set的特性
1.set中的元素总是按照其内部比较对象所指示的特定严格弱排序准则进行排序,即set是按照一定次序存储元素的容器;
2.set中元素的value也是元素的标识key,并且每个value是唯一的(set中元素不能重复);
3.set中元素不能在容器中修改(set底层是红黑树,修改value会导致该结点在树中位置是错误的),但是可以进行插入或删除操作;
4.set中只存放value,不需要构造键值对,但底层实际存放的是由<value, value>构成的键值对;
5.set中查找某个元素,时间复杂度为log2n;
6.set的作用是可以去重。
set的使用
set的模板参数列表
T:set中存放的元素的类型;
Compare:比较方式,默认是小于;
Alloc:set中元素空间的管理方式,使用STL提供的空间配置器管理。
set的构造
set<T> fst; //构造空的set
set<T,less<T>> sec; //构造空的set,根据需要更改Compare函数
set<T> thd(fst.begin(), fst.end());//迭代器[begin,end)构造set
set<T> fou(thd); //拷贝构造
set的迭代器
正向迭代器
正向迭代器++,迭代器向后移动
begin()+end():起始位置元素的迭代器+最后一个元素后面的迭代器;
set<T>::iterator it = fst.begin(); //auto it = fst.begin();
cbegin()+cend():起始位置元素的const迭代器+最后一个元素后面的const迭代器;
set<T>::const_iterator cit = fst.cbegin(); //auto it = fst.cbegin();
反向迭代器
反向迭代器++,迭代器向前移动
rbegin()+rend():最后一个元素的迭代器+起始位置前面的迭代器;
set<T>::reverse_iterator rit = fst.rbegin(); //auto rit = fst.rbegin();
crbegin()+crend():最后一个元素的const迭代器+起始位置前面的const迭代器;
set<T>::const_reverse_iterator crit = fst.crbegin(); //auto crit = fst.crbegin();
set的容量
set是否为空,空返回true,否则返回false;
返回set中有效元素个数;
set的修改操作
插入
在set中插入元素x,实际插入<x, x>构成的键值对,插入成功返回<该元素在set中的位置,true>,失败则说明x在set中存在,返回<x在set中的位置,false>;
删除
(1) 删除pos位置上的元素,返回set容器中删除元素后的第一个元素;
(2) 删除值为val的元素,返回成功删除元素个数;
(3) 删除[ first, last )区间内的所有元素,返回set容器中删除元素后的第一个元素;
交换
交换set中的元素;
清空
将set中元素清空;
查找
返回set中值为val的元素的位置;
计数
返回set中值为val的元素的个数;
multiset
multiset的特性
1.multiset是按照其内部比较规则所指示的特定严格弱排序准则进行排序的,其中元素是可以重复的;
2.multiset元素的值不能修改,但可以从容其中插入或删除;
3.multiset在底层中存储的是<value, value>的键值对;
4.multiset中查找某个元素,时间复杂度是O(log2N);
5.multiset的作用是可以对元素进行排序。
–以上–
最后
以上就是魁梧月饼为你收集整理的[共同学习] set容器浅见的全部内容,希望文章能够帮你解决[共同学习] set容器浅见所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复