在 C++ 中,是否有一种数据结构允许我在以下 for 循环中向其添加元素?
(我使用 list
作为示例,因为这是我迄今为止尝试过的。)
list<Elem> elems;
// fill elems with some Elems;
for(list<Elem>::iterator it=elems.begin(); it!=elems.end();) {
// ...
if(condition)
it = elems.erase(it);
else {
Elem elem;
it = elems.push_back(elem);
}
}
PS:这是Deleting elements from a vector的后续问题
最佳答案
This answer on StackOverflow很好地总结了所有标准容器的行为。
不会在插入或删除时使迭代器无效的容器是list
、set
、multiset
、map
和 multimap
。当然这不包括被删除的迭代器。
关于c++ - 是否有一个标准容器允许在不使迭代器失效的情况下插入元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9230801/