【发布时间】:2020-09-20 11:41:02
【问题描述】:
第一个 for 循环
int i; 对于 (i = 0; i第二个
for循环cout为什么当我使用第一个
for循环显示向量中的所有元素时,我在向量的末尾得到“0”。但是,当我使用范围 for 循环时,我没有得到零。
【问题讨论】:
-
也
vec.size()给你 unsigned int
for 循环int i; 对于 (i = 0; i第二个
for循环cout为什么当我使用第一个
for循环显示向量中的所有元素时,我在向量的末尾得到“0”。但是,当我使用范围 for 循环时,我没有得到零。
【问题讨论】:
vec.size() 给你 unsigned int
在第一个循环中,当i 到达vec.size() 时,vec[i] 超出了vec 的范围,从而导致undefined behaviour (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] << " ";
}
另一方面,ranged-based for loop 精确地迭代所有元素,让我们远离这些麻烦。
【讨论】: