原文链接: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”后台给我留言,欢迎一起探讨交流。