我希望更新向量“v”,以便我可以从计数0-100进行迭代。
我知道这是不被允许的,但如果我只想这样做呢? 有什么办法吗?
int main() {
// your code goes here
vector<int> v;
v.push_back(1);
int count = 0;
for(int elem: v){
if(count<100)
v.push_back(count);
count++;
}
for(int elem: v)
cout << elem << endl;
return 0;
}
输出结果为:
1
0
for (int i = 0; i < 100; i++)
? - Neil Kirkpush_back
在重新分配内存时会使所有迭代器失效,并且在所有情况下都会使 past-the-end 迭代器失效。你的代码存在 UB,因为在底层,range-for 循环会增加一个可能无效的迭代器,然后将其与一个明确无效的迭代器进行比较。 - T.C.