一个普遍的问题是,在快速访问时我们应该使用unordered_map还是map。这个问题最常见(而且很古老)的答案是:如果你想直接访问单个元素,请使用unordered_map,但如果你想迭代元素(最有可能以排序方式进行),请使用map。
在做出这样的选择时,我们不应该考虑键的数据类型吗?因为哈希算法对于一种数据类型(比如int)可能比其他类型(比如字符串)更容易产生冲突。
如果是这种情况(哈希算法非常容易发生冲突),那么即使是直接访问,我也可能会使用map,因为在这种情况下,unordered_map的O(1)常数时间(可能平均大量输入)可能会比lg(N)更高,甚至对于相当大的N值。
在做出这样的选择时,我们不应该考虑键的数据类型吗?因为哈希算法对于一种数据类型(比如int)可能比其他类型(比如字符串)更容易产生冲突。
如果是这种情况(哈希算法非常容易发生冲突),那么即使是直接访问,我也可能会使用map,因为在这种情况下,unordered_map的O(1)常数时间(可能平均大量输入)可能会比lg(N)更高,甚至对于相当大的N值。