C/C++错误集锦(DEV-C++):运行程序提示terminate called after throwing an instance of ‘std::out_of_range’

原文链接:http://www.juzicode.com/archives/3099

错误提示:

运行程序提示terminate called after throwing an instance of ‘std::out_of_range’:

//juzicode.com;vx:桔子code 
#include <iostream>
#include <vector>
using namespace std;
int main(void)
{
    vector<int> a ;
    a.push_back(5);
    a.push_back(15);
    a.push_back(25); 
    a.push_back(35);
    int i=0; 
	for(i=0;i<5;i++){
	    cout << a.at(i)<<endl;
	}     
    return 0;
}

错误原因:

1、vector<int> a 变量push_back()只进行了4次,a只有4个成员,所以下标为0~3,但是在for循环中访问下标却是从0~4,最后的下标4越界了。

解决方法:

1、使用a.size()控制循环边界:

//juzicode.com;vx:桔子code 
#include <iostream>
#include <vector>
using namespace std;
int main(void)
{
    vector<int> a ;
    a.push_back(5);
    a.push_back(15);
    a.push_back(25); 
    a.push_back(35);
    int i=0; 
	for(i=0;i<a.size();i++){//for(i=0;i<5;i++){
	    cout << a.at(i)<<endl;
	}     
    return 0;
}

2、使用迭代器方法遍历变量a: (需要开启c++11标准)

//juzicode.com;vx:桔子code 
#include <iostream>
#include <vector>
using namespace std;
int main(void)
{
    vector<int> a ;
    a.push_back(5);
    a.push_back(15);
    a.push_back(25); 
    a.push_back(35);
    for(int i : a){  
        cout << i<<endl;
    }     
    return 0;
}

dev-c++中开启c++11语言标准方法:


如果本文还没有完全解决你的疑惑,你也可以在微信公众号“桔子code”后台给我留言,欢迎一起探讨交流。

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注