我正在尝试了解C ++标准库并从向量开始。我试图用矢量实现矩阵。以下是我的代码。
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector< vector<double> > matrix;
double array1[5]={1,2,3,4,5};
vector<double> vec1(array1 , array1+5) ;
double array2[5]={11,32,23,24,25};
vector<double> vec2(array2 , array1+5) ;
matrix.push_back(vec1);
matrix.push_back(vec2);
for(int i=0;i<matrix.size();i++)
{
for(int j=0;j<matrix[i].size();j++)
{
cout<<i<<j<<matrix[i][j]<<endl;
//cout<<matrix[i][j]<<endl;
}
}
return 0;
}
当我尝试运行上面的代码时,出现以下错误。
terminate called after throwing an instance of 'std::bad_alloc'
what(): std::bad_alloc
Aborted (core dumped)
有谁能请解释我哪里出错了。
答案 0 :(得分:4)
第vector<double> vec2(array2 , array1+5) ;
行是错误的。它应该是vector<double> vec2(array2 , array2+5) ;
。原来是2个任意地址并试图制作一个向量。由于地址范围[array2, array1+5)
无效,因此会发生未定义的行为。