C++中map和set的简介

admin2024-09-05  10

关联式容器

vector,list,deque等容器统称序列式容器,里面储存的是元素本身。而关联式容器中储存的是<key,value> 的键值对,在数据检索时比序列式容器的效率更高

键值对

键值对是用来表示具有一一对应关系的一种结构,该结构中一般只包含两个成员变量key和value,key代表键值,value代表与key对应的信息

树形结构的关联式容器

C++中的STL实现了两种不同结构的关联式容器,树形结构和哈希结构。树形结构的关联式容器主要有四种,map,set,multimap,multiset

set

1.set是按照一定次序存储元素的容器

2.在set中,元素的value也标识它,value就是key,其类型为T,并且每个value是唯一的。set中的元素不能在容器中修改(容器总是const),但是可以在容器中插入和删除它们

3.set通过key访问单个元素的速度通常比unordered_set慢,但它允许根据顺序直接对子集进行迭代

4.在set中,总是按照其内部比较对象,所指定的特定弱排序准则进行排序

5.set在底层是用二叉搜索树(红黑树来实现的)

注意事项:

1.map/multimap中储存的是真正的<key,value>键值对,set中只放value,但在底层存放的实际是<value,value>键值对

2.set中插入元素时,只需要插入value即可,不需要构造键值对

3.set可以用于去重,set中的元素不能重复

4.使用set的迭代器遍历set中的元素,可以得到有序序列

5.set中的元素默认按照小于来比较

6.set中查找某个元素,时间复杂度为log2(N)

map

1.map是关联式容器,按照key来比较

2.在map中,key用来排序,和唯一标识元素,value中储存与key关联的内容,key与value的类型可能不同

3.在map中,通过键值访问单个元素的速度通常比unordered_map慢,但map允许根据顺序对元素直接进行迭代

4.map支持下标访问,即在[ ]中放入key,就可以找到与key对应的value

5.map由平衡二叉搜索树(红黑树)来实现

multiset

与set的区别是,multiset中的元素可以重复

multimap

与map的区别是,multimap中的key可以重复,multimap中没有重载operator[ ]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明原文出处。如若内容造成侵权/违法违规/事实不符,请联系SD编程学习网:675289112@qq.com进行投诉反馈,一经查实,立即删除!