为什么这段代码没有错误

时间:2018-01-18 17:22:41

标签: c++ vector mingw

根据Stroustrup Programming ..下面的代码应该产生一个范围错误。该错误位于最后一行i<v.size()而不是i<=v.size

我运行了代码并输出了包含v[v.size]的向量内容,而不是抛出异常。我正在使用CodeBlocks mingw

#include <iostream>
#include <string>
#include <vector>
#include <stdexcept>
#include <algorithm>
#include <cmath>
using namespace std;

int main()
{
    vector<int>v;
    for (int x;cin>>x;) v.push_back(x);
    for (int i=0;i<=v.size();i++) cout << "\nv[" << i << "]==" << v[i];
}

1 个答案:

答案 0 :(得分:0)

您期待什么错误?这里没有编译错误,但是存在运行时错误。打印读取值时,它总是走得太远。如果您读取2个值,它将打印索引0,1和2.

可以通过将i<=v.size()更改为i<v.size()来解决此问题。

在索引的for循环中,总是遵循以下模式是很常见的;然后你知道你永远不会错:

for (int i = 0; i < count; i++) {
    ...
}