【发布时间】:2019-05-09 20:40:27
【问题描述】:
我有大约 5000 个大小的字符串(长度主要在 50-80 之间)。目前我创建了一个无序的地图并按下这些键并在执行期间我访问(使用地图'
s find 函数)它们10-1亿次。我围绕这个搜索做了一些分析,似乎是运行时的狂热者。
我搜索了其他更好更快的搜索选项,但不知何故没有找到任何实质性的东西。
有没有人知道如何让它更快,也可以打开定制容器。我确实尝试过std::map,但没有帮助。如果有人有,请分享链接。
还有一点要补充,我也在运行时修改了一些键的值,但不是很多次。主要是搜索。
【问题讨论】:
-
std::map似乎让事情变得更糟,因为您的问题是搜索密集型,std::unordered_map通常比std::map做得更好(查看更多stackoverflow.com/questions/2196995/…)。 IMOstd::unordered_map使用的哈希函数可能是瓶颈。 -
也许你可以试试这个github.com/greg7mdp/sparsepp。
-
还有一个类似的问题:stackoverflow.com/questions/8372579/…
标签: c++11 stl unordered-map stdmap