Avatar ·

对于简单键(int、string),map 是否比 unordered_map 有优势?

大家好!我写 C++ 大约一年了,有一个问题一直困扰着我。假设我需要存储一个字典,其中键是 int 或 string。我知道 `std::map` 实现为红黑树(操作 O(log n)),而 `std::unordered_map` 实现为哈希表(平均 O(1))。看起来对于简单键,`unordered_map` 总是更快,我经常看到它被推荐给新手。但在 StackOverflow 上,我偶然发现一个讨论,其中有经验的开发者声称 `map` 有优势。 我尝试写了一个小测试: ```cpp #include #include #include #include int main() { std::map ordered; std::unordered_map unordered; // 填充 100000 个元素 for (int i = 0; i < 100000; ++i) { ordered[i] = "value_" + std::to_string(i); unordered[i] = "value_" + std::to_string(i); } // 查找 for (int i = 0; i < 100000; ++i) {