向量列表初始值设定项和赋值
对于两段代码,我不明白第二段
第一:它按预期打印 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但你的索引元素,如4,5和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;
}