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
关于c++ - 具有整数键的映射与 vector 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13931325/