【发布时间】:2020-02-05 09:50:17
【问题描述】:
为什么map是双向数据结构。如果我们知道使用它的键,我们可以很容易地访问任何元素,就像一个随机访问数据结构的数组一样?那么地图不应该是一个随机访问的数据结构,因为我们可以访问它的任何数据而不必访问它之前的任何元素。
【问题讨论】:
-
我不知道您所说的“双向数据结构”,但按照标准,
std::map属于 关联容器 系列。它将键与值相关联。您可以随心所欲地随机访问它,但只能通过密钥。它的迭代只是双向的。 -
@mudit rustagi 如果您想要一个对访问元素具有恒定复杂性的地图,您可能想看看
std::unordered_map,它是用哈希表实现的,而不是像@ 这样的树987654323@ -
@muditrustagi 您似乎将
std::map与std::unordered_map混淆了。只有后者被实现为“哈希映射”。 -
std::map通常实现为红黑树,因此使用二分查找找到项目(复杂度O(log n))。 -
而
std::unordered_map的迭代 只是向前的,尽管它是“随机访问”查找
标签: c++ dictionary bidirectional random-access