7

在C++ 标准表 91的§23.2.7 无序关联容器 [unord.req]中,描述了 STL 无序关联容器必须满足的附加要求。在此表中,标准规定 STL 无序容器(即 、和)必须提供成员类型和。unordered_setunordered_mapunordered_multisetunordered_multimaplocal_iteratorconst_local_iterator

在此处输入图像描述

  • local_iterator 是一个迭代器类型,其类别、值、差异、指针和引用类型与无序容器的iterator. 此迭代器可用于遍历单个存储桶,但不能跨存储桶。
  • const_local_iterator是一个迭代器类型,其类别、值、差异、指针和引用类型与无序容器的const_iterator. 此迭代器可用于遍历单个存储桶,但不能跨存储桶。

这些迭代器有什么用途?

4

1 回答 1

5

我可以看到它的主要用途是检查您有多少次碰撞。使用bucket您可以获得密钥存储在哪个存储桶中。然后您可以将该存储桶值传递给该存储桶值,begin该值将返回local_iterator该存储桶中的项目。现在您可以迭代该存储桶并查看是否与任何其他元素发生碰撞,如果发生碰撞,这些元素是什么。这反过来又允许您调整散列函数。

于 2017-02-14T13:01:28.810 回答