我有一张约100,000对的地图.有没有什么方法可以在使用find()时加快搜索速度,因为键是按字母顺序排列的.我该怎么做呢.我知道您可以在创建地图时指定新的比较器.但是这会加速find()函数吗?
提前致谢.
[解决]感谢一群人我决定使用矢量并使用较低和上限来"剪切"一些搜索.
另外我是新来的,有没有办法将这个问题标记为已回答,或者选择最佳答案?
Jer*_*fin 11
一个不同的比较器只会加速查找,如果它设法更快地进行比较(对于字符串通常会非常困难).
如果您基本上按顺序插入所有数据,然后进行搜索,则使用std::vectorwith std::lower_bound或更快可能会更快std::upper_bound.
如果您并不真正关心订购,并且只想尽快找到数据,您可能会发现这std::unordered_map对您更有效.
编辑:仅供记录:您可能"找到"或"可能找到"这些东西的方式通常是通过分析.根据情况,它可能足够快,即使在简单的测试中也很明显,因此分析不是必需的,但如果有(很多)怀疑,或者你想量化效果,分析器可能是正确的方法去做吧.