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