vector<obj> vec;
deque<iterator> q;
iterator it = vec.find(obj1);
q.push_back(it);
vec.erase(it);
我知道 it 会被复制到 q 但我想知道的是它会指向无效的东西?
最佳答案
迭代器保持有效,直到对原始容器执行可以使它们失效的操作。可以使迭代器无效的操作取决于容器的类型。
所以,是的,可以将迭代器存储在容器中。这是不可取的,因为没有什么可以阻止原始容器使它们无效 - 并且没有通用/可靠的方法让代码使用迭代器的容器来检测它,并避免使用无效的迭代器。
从容器中获取有效的迭代器并不是一项特别昂贵的操作,因此无论如何存储迭代器几乎没有什么好处。
关于c++ - 将一个容器的迭代器复制到另一个迭代器容器中,然后再从第一个容器中删除它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35649787/