c – 如何迭代哈希表实现?

我正在尝试了解如何迭代哈希表实现.我只是无法想象它.我对这种迭代的速度特别感兴趣.例如:
QHash<int,std::string> hashTable;
...
for (auto it = hashTable.begin(); it != hashTable.end(); ++it)
    std::cout << it.value() << std::endl;

这是O(hashTable.size())操作吗?

我试图挖掘源代码,但找不到正确的定义.

解决方法

哈希表的一些实现还维护所有条目的链表以允许快速迭代(所谓的“链接散列映射”).

当它们不存在时,唯一的方法是迭代散列表的所有桶,同时也迭代每个桶中的元素.

此操作的速度取决于表的填充状态.当它非常低的时候,需要重复大量空桶,浪费时间.当表填满时,每个桶中有一个或多个元素,它几乎像迭代一个链表.在一个完美的哈希图上,每个bucket只包含一个元素,就像迭代一个数组.

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...