容器总结

顺序容器和关联容器的区别:
①顺序容器只有实值val。
②关联容器的一个元素包含两个部分:键值对(key-value) 即<k值(键值)|实值>。
③顺序容器不涉及排序,关联容器内部自动排序。
④本质区别:顺序容器通过元素在容器中的位置顺序存储和访问元素,而关联容器则是通过键(key)存储和读取元素的。
原文链接:https://blog.csdn.net/weixin_43691058/article/details/88556471
无序容器(unordered_map,unordered_set,unordered_multimap...)
与关联容器(map, set)的区别主要在于底层实现使用的映射方式上,无序容器采用的是Hash方法,而关联容器采用的是红黑树。

在 unordered_map 内部,使用的 Hash Table 对数据进行组织,通过把键值 key 映射到 hash 表中的一个位置进行访问,根据 hash 函数的特点, unordered_map 对于元素查找的时间复杂度可以达到 O(1) ,
但是,它的元素排列是无序的,如下。

适用于适用于查找频率高的场景。
Ref: https://zhuanlan.zhihu.com/p/210458185
C++ Map Key值的比较操作
两个字符串自左向右逐个字符相比(按ASCII值大小相比较),直到出现不同的字符或遇’\0’为止。
下图举例:

对于自定义的结构和类型,需要定义比较操作才能做key值。
定义一个类来实现operator()函数操作:
bool operator()(const A& a, const A& b)const{}
也是实现重载;

浙公网安备 33010602011771号