【发布时间】:2022-01-21 20:21:03
【问题描述】:
我在这里看到一个帖子,您可以“遇到生日问题”。同时使用std::unordered_map
When should I use unordered_map and not std::map
这真的让我感到惊讶,这与说 std::unordered_map 使用不安全是一样的。真的吗?如果我不解释自己,让我举个例子:
unordered_map<size_t, size_t> m;
for (size_t i = 0; i < 100; ++i)
m[i] = i;
for (size_t i = 0; i < 100; ++i)
if (m[i] != i)
cerr << "ERROR!" << endl;
如果此代码在main 中,是否有可能打印ERROR!?
【问题讨论】:
-
碰撞不会破坏它,它们只会使搜索碰撞元素的速度变慢。
-
取决于您所说的不安全是什么意思。碰撞的可能性是真实的,但这并不意味着您在每种情况下都会遇到这种情况。但要牢记这一点。
-
如果您确实想查看一些病态行为的案例(不仅限于 unordered_map,它也会影响 map),请尝试使用
double作为键类型并插入NaN键。
标签: c++ dictionary hashmap hash-collision