vector<obj> vec;
deque<iterator> q;
iterator it = vec.find(obj1);
q.push_back(it);
vec.erase(it);
我知道 it 会被复制到 q 中,但我想知道的是它会不会指向无效的东西?
答案 0 :(得分:1)
迭代器保持有效,直到在原始容器上执行可以使它们无效的操作。可以使迭代器无效的操作取决于容器的类型。
所以,是的,可以将迭代器存储在容器中。这是不可取的,因为没有什么能阻止原始容器使它们无效 - 并且没有通用/可靠的方法使用迭代器容器来检测它,并避免使用无效的迭代器。
从容器中获取有效的迭代器并不是一项特别昂贵的操作,因此无论如何都存储迭代器的好处很少。