c++ - 在迭代时修改数据结构

标签 c++ stl iteration

将元素添加到 vector 等数据结构时会发生什么 迭代它。我不能这样做吗?

我试过了,它坏了:

int main() {
    vector<int> x = { 1, 2, 3 };

    int j = 0;
    for (auto it = x.begin(); it != x.end(); ++it) {
        x.push_back(j);
        j++;
        cout << j << " .. ";
    }
}

最佳答案

迭代器因某些修改 std::vector 的操作而失效。

其他容器有关于迭代器何时失效和不失效的各种规则。 This is a post (由您真诚地)提供详细信息。

顺便说一句,入口函数main() 必须返回int:

int main() { ... }

关于c++ - 在迭代时修改数据结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5638323/

相关文章:

c++ - 移动构造函数和赋值运算符 : why no default for derived classes?

c++ - 定义这两个类 "typedef map<C, B::iterator> A ; typedef list<D, A::iterator> B "?

c++ - 为什么它说 'push_back' 尚未声明?

c++ - 为什么使用带有 C++ 'vector' 的新调用?

.net - Win32 控制台应用程序与 CLR 控制台应用程序

c++ - 在 QImage alpha channel 中制作多边形孔

c - GCD,迭代和递归问题

c++ - 我如何仅使用 Binder 在 map 中找到值

java - 是否可以遍历具有不同数据类型的元素的数组列表并将它们放出来?

python - 如何一次循环两个列表列表并将一个列表中的值替换为另一个列表中的值?