gpt4 book ai didi

c++ - 关于使迭代器失效

转载 作者:太空狗 更新时间:2023-10-29 19:40:58 25 4
gpt4 key购买 nike

STL 容器存在迭代器在容器更改时失效的问题。容器是否可以通过添加调用 has_changed() 来宣布它已更改?

在某些操作之前查询 empty() 是很常见的。如果容器在会影响迭代器(如 insert() 或 erase() )的操作上设置 bool 值,则可以在重用迭代器之前查询 has_changed() 。

疯了吗?

编辑 感谢您的大量回复和深思。我希望我能奖励不止一位获奖者。

最佳答案

有点疯狂,如果是出于好意的话。

我认为主要问题是容器如何知道它何时“未更改”?换句话说,某些东西被删除并设置了“已更改”标志。由于标志恢复到正常或稳定状态而重置标志的突发事件是什么?处于无效状态的实际上是迭代器而不是容器。

我认为要在所有迭代器上工作,迭代器需要比现在更智能,并且更像容器的观察者。容器可以向注册的迭代器发送它已更改的事件,并且它们可以在尝试操作之前检查自己的状态。但即使这有这么多漏洞,它也可能会导致比您试图解决的问题更大的困惑。

关于c++ - 关于使迭代器失效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6047700/

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