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

Copying iterators of a container into another container of iterators before erasing it from the first

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

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

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

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

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