将容器的迭代器复制到另一个迭代器容器中,然后从第一个容器中删除它

时间:2016-02-26 10:53:06

标签: c++ iterator std

vector<obj> vec;
deque<iterator> q;
iterator it = vec.find(obj1);
q.push_back(it);
vec.erase(it);

我知道 it 会被复制到 q 中,但我想知道的是它会不会指向无效的东西?

1 个答案:

答案 0 :(得分:1)

迭代器保持有效,直到在原始容器上执行可以使它们无效的操作。可以使迭代器无效的操作取决于容器的类型。

所以,是的,可以将迭代器存储在容器中。这是不可取的,因为没有什么能阻止原始容器使它们无效 - 并且没有通用/可靠的方法使用迭代器容器来检测它,并避免使用无效的迭代器。

从容器中获取有效的迭代器并不是一项特别昂贵的操作,因此无论如何都存储迭代器的好处很少。