概述
set和map
- set
- multiset
- map
- operator[]和at()
- multimap
set
- 与map/multimap不同,map/multimap中存储的是真正的键值对<key, value>,set中只放value,但在底层实际存放的是由<value, value>构成的键值对。
- set中插入元素时,只需要插入value即可,不需要构造键值对。
- set中的元素不可以重复(因此可以使用set进行去重)。
- 使用set的迭代器遍历set中的元素,可以得到有序序列
- set中的元素默认按照小于来比较
- set中查找某个元素,时间复杂度为:log2N(log以2为底,N的对数)
- set中的元素不允许修改(为什么?)
- set中的底层使用二叉搜索树(红黑树)来实现
multiset
- multiset中再底层中存储的是<value, value>的键值对
- mtltiset的插入接口中只需要插入即可
- 与set的区别是,multiset中的元素可以重复,set是中value是唯一的
- 使用迭代器对multiset中的元素进行遍历,可以得到有序的序列
- multiset中的元素不能修改
- 在multiset中找某个元素,时间复杂度为log2N(log以2为底,N的对数)
- multiset的作用:可以对元素进行排序
map
- map中的的元素是键值对
- map中的key是唯一的,并且不能修改
- 默认按照小于的方式对key进行比较
- map中的元素如果用迭代器去遍历,可以得到一个有序的序列
- map的底层为平衡搜索树(红黑树),查找效率比较高log2N(log以2为底,N的对数)
- 支持[]操作符,operator[]中实际进行插入查找
operator[]和at()
相同 : 都是通过key找到与key对应的value然后返回其引用
不同 : 当key不存在时,operator[]用默认value与key构造键值对然后插入,返回该默认value,at()函数直接抛异常.
multimap
- multimap中的key是可以重复的。
- multimap中的元素默认将key按照小于来比较
- multimap中没有重载operator[]操作。
- 使用时与map包含的头文件相同:
最后
以上就是和谐冬天为你收集整理的C++: set和map知识点总结setmultisetmapmultimap的全部内容,希望文章能够帮你解决C++: set和map知识点总结setmultisetmapmultimap所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复