微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

你能找到多重集的哪个实例包含给定的迭代器吗?

如何解决你能找到多重集的哪个实例包含给定的迭代器吗?

假设我有几个多集实例,并且我得到了一个迭代器 it 到其中一个实例,但是我没有被告知这个迭代器属于哪个实例。对于每个实例,是否有 O(1) 方法来确定此迭代器是否属于此实例?为此,我认为 multiset 容器必须为它所拥有的迭代器包含某种哈希表,但我不相信 STL 库会这样做。

我在文档中找不到可以执行此操作的函数,因此我能想到的唯一方法是首先遵循给定的迭代器并使用 instance.find(*it),如果找到,则使用 {{1 }} 进行线性搜索以查看指向相同值的迭代器之一是否是给定的迭代器。

解决方法

简短回答:不,没有。此外,以某种形式或方式将迭代器与不是它来自的容器一起使用是未定义的行为。最后,比较来自不同容器的两个迭代器也是未定义行为,因此您描述的解决方法也是未定义行为。

以上适用于 C++ 库中的所有容器,而不仅仅是多重集。

迭代器引用的对象需要以某种形式或方式引用它们所属的容器;没有任何其他实用的替代方案。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。