gpt4 book ai didi

c++ - C++ 迭代器的生命周期和有效性是多少?

转载 作者:可可西里 更新时间:2023-11-01 15:06:07 25 4
gpt4 key购买 nike

我计划用 C++ 实现一个事物列表,其中的元素可能会被乱序删除。我不希望我需要任何类型的随机访问(我只需要定期扫描列表),而且项目的顺序也不重要。

所以我想到了 std::list<Thing*> with this->position = insert(lst.end(), thing) 应该可以解决问题。我希望 Thing 类记住每个实例的位置,以便以后可以轻松地执行 lst.erase(this->position) 在常数时间内。

但是,我对 C++ STL 容器还是有点陌生​​,我不知道将迭代器保存这么长时间是否安全。特别是考虑到在插入的 Thing 消失之前和之后还会有其他元素被删除。

最佳答案

在列表中,所有迭代器在插入期间保持有效,只有被删除元素的迭代器在删除期间无效。

在您的情况下,即使其他元素在插入的事物*之前和之后被删除,保留迭代器也应该没问题。

编辑:

vector 和 deque 的额外细节:

vector :

  • 插入 --- 所有迭代器得到如果发生重新分配则无效,否则有效。
  • erasing ---- 之后的所有迭代器删除点无效。

双端队列:

  • 插入 --- 所有迭代器得到无效。
  • erasing ----所有迭代器得到无效。

关于c++ - C++ 迭代器的生命周期和有效性是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/759274/

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