向量列表初始值设定项和赋值

对于两段代码,我不明白第二段

第一:它按预期打印 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但你的索引元素,如459它们是出界。

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;
}


以上是向量列表初始值设定项和赋值的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>