我想做一个循环来显示从第一个和第二个,第二个和下一个,第三个和下一个到最后一个的向量中的元素。然而,当我运行这个错误弹出说矢量下标超出范围...任何建议请 我是初学者。
for (int i = 0; i < vecB.size(); i++)
{
cout << vecB[i]; cout << " "; cout << vecB[i + 1];
}
答案 0 :(得分:5)
如果vecB.size()
是例如5,那么在循环的最后一次迭代中,i
将是4.这将是i
的最后一个值,在最后一次迭代中你的for
循环。现在采取这个循环的主体:
cout << vecB[i]; cout << " "; cout << vecB[i + 1];
并尝试弄清楚,使用铅笔纸,这里的任何矢量参考是否超出范围。请注意,vecB
包含五个元素,vecB[0]
到vecB[4]
。而且,正如我所解释的那样,i
将是4。
时钟开始滴答...... 现在。
答案 1 :(得分:1)
在循环的最后一次迭代中,显示最后一个项目和后面的项目,因此不存在错误
答案 2 :(得分:0)
让我们想象一下vecB.size() == 3
让我们来看看循环:
for (int i = 0; i != vecB.size(); ++i)
cout << vecB.at(i) << " " << vecB.at(i + 1);
// 0 1
for (int i = 0; i != vecB.size(); ++i)
cout << vecB.at(i) << " " << vecB.at(i + 1);
// 1 2
for (int i = 0; i != vecB.size(); ++i)
cout << vecB.at(i) << " " << vecB.at(i + 1);
// 2 3! out of range!
您可以通过选中i != vecB.size() - 1
:
for (int i = 0; i != v.size() - 1; ++i)
cout << v.at(i) << " " << v.at(i + 1) << '\n';