提问人:danijar 提问时间:12/18/2012 更新时间:12/18/2012 访问量:7178
带有整数键和向量的地图之间的区别
Difference Between Map with Integer Key and Vector
答:
4赞
Luchian Grigore
12/18/2012
#1
不,a 中的索引是连续的,而 a 中的索引不一定是连续的。vector
map
此外,保证 a 中的值位于连续内存中,而不是 .vector
map
对于两者的大多数操作来说,这两者意味着不同的复杂性。
7赞
yiding
12/18/2012
#2
主要区别在于数据的存储方式。
A 将数据存储在内部数组中,该数组会调整大小并添加更多元素。
An 在内部使用哈希表。vector
unordered_map
实际上,a 在后面为您提供摊销的恒定时间插入(它需要偶尔调整大小和复制/移动所有内容)、按索引访问的恒定时间,以及线性时间插入和删除(所有后续元素都必须移动)。此外,由于 a 是连续的,因此您可以将其传递给需要 c 样式数组的函数。vector
vector
unordered_map
按键提供摊销的常量时间查找(因为哈希并不完美,并且冲突会强制查找遍历内部链表),摊销常量时间插入和删除。
请参见:http://en.cppreference.com/w/cpp/container/unordered_map 和:http://en.cppreference.com/w/cpp/container/vector
评论