【发布时间】:2014-10-01 10:41:36
【问题描述】:
我知道 C++ STL 中的 unordered_map 是作为哈希表实现的,该哈希表由对应于哈希值的存储桶组成。插入、删除和元素搜索的时间保证是摊销常数。但是我不太明白迭代器是如何在这个数据结构上工作的。当我增加迭代器时,它如何知道下一个位置在哪里?当我使用迭代器迭代 unordered_map 时,时间复杂度是多少?时间是否用于查找迭代器常量的下一个位置?我在 The C++ Standard Library: A tutorial and Reference 一书中找到了一些关于 unordered_map 内部结构的信息,但我找不到我的问题的答案。希望有人能帮忙!
谢谢。
【问题讨论】:
-
这篇文章 (stackoverflow.com/questions/19610457/…) 说任何标准容器都必须提供 O(1) 迭代器。 (我建议删除这个问题,除非它实际上与链接的问题不同)。
-
从 cmets 之一“C++ 标准的第 24.4.4 节”中提取此内容,给出了对前向迭代器的 ++ 运算符的要求。好问题。我很享受这次旅行。 :)
-
@sam 如果这是一个“好”的问题,那么就没有理由删除它!标记为重复(如果适用)。
-
@sam 感谢您的链接!
标签: c++ stl unordered-map