【发布时间】:2012-11-27 18:52:12
【问题描述】:
假设我想以字符串为键映射数据。
我应该选择哪个容器,map 或 unordered_map? unordered_map 占用更多内存,所以我们假设内存不是问题,关注的是速度。
unordered_map 通常应该给出 O(1) 的平均复杂度,最坏的情况是 O(n)。
在什么情况下会达到 O(n)?
map 什么时候比 unordered_map 更节省时间?当 n 小时会发生这种情况吗?
假设我将使用 STL unordered_map 和默认的 haser Vs。地图。字符串是关键。
如果我要遍历元素而不是每次都访问单个元素,我应该更喜欢map吗?
【问题讨论】:
-
是否需要对映射中的项目进行排序?
-
unordered_map的哪个实现使用更多内存? -
哈希映射中总是有内存开销,尽管它通常可以忽略不计。
-
这是一个小问题,但当你提到迭代时,值得指出的是,如果你在插入元素时进行迭代,你应该更喜欢 map 而不是 unordered_map。
标签: c++ dictionary data-structures stl unordered-map