循环访问时修改数据结构
|
将元素添加到数据结构(例如向量)时会发生什么情况
遍历它。我不能这样做吗?
我试过了,它坏了:
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 << \" .. \";
}
}
没有找到相关结果
已邀请:
6 个回复
勺的驴吓识
必须返回
:
席陋临拈
来知道。),并向其中添加元素,当向量已满时,它将分配更大的内存大小,将元素从旧内存复制到新分配的内存,然后删除旧内存,问题是迭代器仍指向已释放的旧内存。这就是调整大小使迭代器无效的方式。 这是简单的演示。只要看看ѭ6何时变化:
部分输出:
在此处查看完整的输出:http://ideone.com/rQfWe 注意:
表示向量可以包含的最大元素数量,而不分配新的内存,,10ѭ表示向量当前包含的元素数量。
黎喊病
芦歉竭皑
稀瓣囊
蕾跨立锌煤