[英]Difference Between Map with Integer Key and Vector
向量是带有整数键的unordered_map的特殊形式吗? 看起来是这样,因为矢量也有整数键。
如果没有,有什么区别?
Vector是一个数组周围的容器。
无序映射是二叉树周围的容器。
这意味着它们具有不同的性能特征。 一些例子:
主要区别在于数据的存储方式。
vector
将数据存储在调整大小的内部数组中,并添加更多元素。 unordered_map
在内部使用哈希表。
实际上, vector
为您提供在后面分配的常量时间插入(它需要一次调整大小并复制/移动所有内容),通过索引进行常量时间访问,以及最多线性时间插入和删除(所有后续元素必须转移)。 此外,由于vector
是连续的,您可以将其传递给期望c样式数组的函数。
unordered_map
为您提供按密钥分摊的常量时间(因为散列不完美,并且冲突会强制查找遍历内部链接列表),分摊的常量时间插入和删除。
请参阅: http : //en.cppreference.com/w/cpp/container/unordered_map和: http : //en.cppreference.com/w/cpp/container/vector
不, vector
中的索引是连续的,在map
它们不一定是。
此外, vector
中的值保证在连续内存中,而不是在map
。
这两者对于两者的大多数操作意味着不同的复杂性。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.