gpt4 book ai didi

c++ - 可取消引用的迭代器

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:44:39 29 4
gpt4 key购买 nike

标准中是否有任何内容表明如果 a 是标准容器,则返回未失效迭代器的 a 的任何方法都应该是可解引用的或等于a.end()?

用返回未失效且不同于a.end()且不能被取消引用的迭代器的方法编写容器是否违反标准?

我正在考虑构建一个开放的寻址哈希表,其中

it search(const K& key)

如果键在哈希表中,则返回指向存储 (key, value) 对的槽的指针,如果键不在该哈希表中,则返回 (key, value) 应该插入的槽.在第二种情况下,迭代器无法取消引用,并且与 a.end() 不同。

感谢您的帮助。

最佳答案

迭代器是C++标准库中在基本语言特性之上引入的一个概念。您当然可以拥有自己的“迭代器”类型。

然而,为了清晰的语义,在哈希表的情况下,search() 可能永远不会返回 end(),因为它总是返回一个有效的插槽(即使它可能是空的)。

通过返回迭代器,您可能打算通过调用 operator++() 来尝试连续的哈希值。在这种情况下,当所有槽(空的或空的)都用完时,它可以返回 end()(假设哈希表大小保持不变)。

关于c++ - 可取消引用的迭代器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41417888/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com