c++ - 是否有一个标准容器允许在不使迭代器失效的情况下插入元素?

标签 c++ stl containers

在 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很好地总结了所有标准容器的行为。

不会在插入或删除时使迭代器无效的容器是listsetmultisetmapmultimap。当然这不包括被删除的迭代器。

关于c++ - 是否有一个标准容器允许在不使迭代器失效的情况下插入元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9230801/

相关文章:

c++ - 连续删除 vector 元素

c++ - 在自定义迭代器中包装 STL 容器的最佳方法是什么?

wpf - 寻找将自身加载到菜单中的模块的 Prism 示例

c++ - 如何从 C++ 中的文本文件中删除一个空行?

c++ - 用数组进行字节交换?

c++ - 为了使函数返回编译时常量值,模板中是否需要 constexpr const Type?

c++ - 如何在条件变量等待时关闭时阻止 C++ 程序崩溃?

c++ - set 和 multiset 只是一个谓词不同吗?

c++ - 在 vector<pair<string, int>> 上使用 std::sort 的段错误

c++ - 从 2 个 vector 中提取元素?