gpt4 book ai didi

c++ - 为什么 vector 不循环更新?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:51:59 26 4
gpt4 key购买 nike

我想更新 vector “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

最佳答案

definition可以看出在基于范围的 for 循环中,end_expr 不会在迭代之间更新。因此,您只有一次迭代。 push_back 使 v.end() 无效(这就是链接页面中描述的 end_expr ),所以你所拥有的实际上是未定义的行为.

可以说用 0..100 填充 vector 的最简单方法是:

vector<int> v(101);
std::iota(v.begin(), v.end(), 0);

关于c++ - 为什么 vector 不循环更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26612150/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com