假设我想使用字符串作为键来映射数据。
我应该选择哪个容器mapunordered_mapunordered_map占用更多内存,因此让我们假设内存不是问题,而关注的是速度。
unordered_map通常应以O(n)的最坏情况给出O(1)的平均复杂度。
在什么情况下会达到O(n)?
什么时候mapunordered_map更有效率?当n小时会发生吗?

假设我将STL unordered_map与默认的haser Vs一起使用。 map 。字符串是关键。

如果我要遍历元素而不是每次都访问单个元素,是否应该使用map

最佳答案

实际上,如果没有问题,那么如果要访问单个元素,unordered_map总是更快。

最坏的情况是理论上的,并且限制了所有元素的单个哈希值。这没有实际意义。一旦您至少拥有属于同一哈希的log N个元素,unordered_map就会变慢。这也没有实际意义。在某些特殊情况下,您可以使用特定的哈希算法来确保更均匀的分布。对于不共享特定模式的普通字符串,unordered_map附带的通用哈希函数也一样。

如果要以排序方式遍历 map (使用迭代器),则不能使用unordered_map。相反,map不仅允许这样做,而且还可以根据键的近似值为您提供 map 中的下一个元素(请参见lower_boundupper_bound方法)。

08-26 11:16