显示向量的所有元素

gal*_*324 3 c++ for-loop vector c++11

第一次for循环

  国际我;
  for (i = 0; i <= vec.size(); i++) {
    如果 (vec.size() == 0) {
      cout << "[] 列表为空" << endl;
    } 别的 {
      cout << vec[i] << " ";
    }
  }
}

第二个for循环

cout << "[ ";
for(自动编号:vec)
  cout << num << " ";
cout<<“]”;

为什么当我使用第一个for循环显示向量中的所有元素时,我在向量末尾得到“0”。但是,当我使用范围 for 循环时,我没有得到零。

son*_*yao 5

在第一个循环中,当i达到 时vec.size()vec[i]超出了 的范围vec,这会导致未定义的行为(UB)。您需要将循环条件从 更改i<=vec.size()i<vec.size()

此外,您vec.size() == 0对循环内部的检查永远不会为真。该检查需要移至循环上方。

if (vec.size() == 0) {
    cout << "[] The list is Empty" << endl;
}
for (i=0; i<vec.size(); i++) {
    cout <<vec[i] << " ";
}
Run Code Online (Sandbox Code Playgroud)

另一方面,基于范围的 for 循环精确地迭代所有元素,让我们远离这些麻烦。