Har*_* Sj 4 c++ arrays stdmap c++-standard-library data-structures
为什么 c++ 标准映射非常有名,而成对数组也与那些相似?
什么时候使用 C++ 标准映射更好,什么时候使用成对数组?或者两者的应用程序相似?
为什么c++ 标准映射非常有名,而对数组 也与那些相似?
下表应该给你一个小想法,在哪里使用c++ 标准映射(只选择一些)而不是数组对。
什么时候使用C++ 标准映射更好,什么时候使用成对数组?
你总是可以对你的数据结构的效率进行基准测试,看看哪个适合哪种情况。
让我们看一个例子。
例如下面是在https://quick-bench.com/ 中做的基准测试,在每个元素的开头插入10000 个元素
std::vector<std::pair<int, std::string>>)vsstd::map<int, std::string>)vsstd::unordered_map<int, std::string>)。事实证明,对于此类操作,使用 C++ 标准映射比数组对更快/更高效。
(见在线基准)
但是,对于较少条目(让我们考虑10 个元素)的情况,相同的测试表明,对数组(即std::vector<std::pair<int, std::string>>)的使用将比标准哈希映射(即std::unordered_map<int, std::string>)更快/有效,并且几乎等同于标准映射(即std::map<int, std::string>)。
(见在线基准)
简而言之,经验法则是,在选择正确的数据结构以获得最佳结果之前,始终对您将要拥有的操作进行基准测试和测试。为进一步参考看看std::vector,std::map,std::unordered_map,等以及它们各自的操作。