【发布时间】:2012-05-15 11:15:12
【问题描述】:
C++ 中是否有带有O(1) 查找的数据结构?
std::map 具有 O(log(n)) 查找时间(对吗?)。
我最好从std 中寻找东西(所以不是Boost pls)。另外,如果有,它是如何工作的?
编辑:好的,我猜我还不够清楚。我想关联值,有点像map。所以我想要std::map<int,string>,find 和insert 应该采用O(1)。
【问题讨论】:
-
这完全取决于数据,尤其是key的类型和可能值:那么你要存储什么样的数据呢?
-
可能类似于链接数组的东西?它大约有 O(1)。链接数组是数组的链接列表。
-
std::unordered_map<>。它之所以在命名空间std中,是因为它首先在命名空间boost中。 -
有
std::unordered_map,在C++11之前是std::tr1::unordered_map。 -
@DeadMG:如果他需要
std::map之类的东西,那么他需要std::map,除非他告诉我们std::map为他提供了更多 比他实际上需要。
标签: c++ data-structures stl std