gpt4 book ai didi

c++ - vector 列表初始化器和赋值

转载 作者:行者123 更新时间:2023-12-01 23:31:12 27 4
gpt4 key购买 nike

这两段代码,第二段我看不懂

第一个:它按预期打印 0 1 2

  vector<int> ivec;
ivec={0,1,2};
for(auto i: ivec){
cout<<ivec[i]<<endl;
}

第二:它打印 0 0 0 5。这个随机值是如何生成的?

  vector<int> ivec;
ivec={0,1,2};
ivec={4,5,9,1};
for(auto i: ivec){
cout<<ivec[i]<<endl;
}

最佳答案

这是未定义的行为,因为 ivec 的大小为 4 但您正在索引诸如 45 之类的元素和 9 超出范围。

for(auto i : ivec){
cout << ivec[i] << endl;
}

相反,您应该自己打印元素

for(auto i : ivec){
cout << i << endl;
}

需要明确的是,在基于范围的 for 循环中,i 是实际元素而不是元素的索引。如果您想使用索引,则不会使用基于范围的 for 循环

for(std::size_t i = 0; i < ivec.size(); ++i){
cout << ivec[i] << endl;
}

关于c++ - vector 列表初始化器和赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66211795/

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