尝试使用向量构建矩阵时出错

时间:2015-11-16 17:00:33

标签: c++

我正在尝试了解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)

有谁能请解释我哪里出错了。

1 个答案:

答案 0 :(得分:4)

vector<double> vec2(array2 , array1+5) ;行是错误的。它应该是vector<double> vec2(array2 , array2+5) ;。原来是2个任意地址并试图制作一个向量。由于地址范围[array2, array1+5)无效,因此会发生未定义的行为。