C++中是否有搜索时间复杂度为O(1(的数据结构?例如,检查元素中是否存在,如果存在,则其位置或关联的索引/键/值是什么
你想要的是C++11的std::unordered_map
,平均访问时间为O(1(,最坏情况为O(n(。
Google的Abseil库中还有高质量的开源"瑞士表"容器。在CppCon 2017上,有一个有趣的演讲描述了这些容器的实现和目标。
简而言之,它们就像标准中的哈希容器,但它们通常提供更好的性能,因为它们对缓存更友好(以不维护引用稳定性为代价,如注释中所述(。