向量2D第一次使用

时间:2015-04-03 17:06:02

标签: c++ vector

这是我第一次在C ++中使用2D向量,虽然循环的索引小于它的大小,但我似乎试图访问禁止的位置

int generate_(vector<int> row,vector<int> column)
{
    int i=1,j=1,k=0,l=0;
    vector<vector<int > >matrix;//2D vector


    for(k=0,l=0;l<column.size();l++)
    {
        matrix[k][l]=row[l];
        cout << matrix[k][l]<<endl;
    }

    for(k=0,l=0;l<row.size();l++)
        matrix[l][k]=column[l];

        for(i=1;i<row.size();i++)
        {
                for(j=1;j<column.size();j++)
                {
                matrix[i][j]=matrix[i][j-1]+matrix[i-1][j]+matrix[i-1][j-1];

                }
        }
    return matrix[i-1][j-1];
}

2 个答案:

答案 0 :(得分:1)

矩阵未初始化,它没有元素,因此矩阵[k] [l]将引发异常

答案 1 :(得分:0)

了解您尝试初始化矩阵中的数据,但您必须在初始化之前为此矩阵分配内存。

更改此行

vector<vector<int > >matrix;//2D vector

vector<vector<int > >matrix(column.size(), vector<int>(column.size(), 0));

等于:

vector<int> intVector(column.size(), 0)
vector<vector<int > >matrix(column.size(), intVector);

[图片从www.stackover.com复制,但我丢失了原来的帖子ID] enter image description here