/ / Вектори 2D първа употреба - c ++, вектор

Вектори 2D първа употреба - c ++, вектор

За първи път използвам 2D вектори в C ++ и изглежда, че се опитвам да получа достъп до забранено местоположение, въпреки че индексите на цикли са по-малко, отколкото е размерът

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];
}

Отговори:

1 за отговор № 1

матрицата не е инициализирана, тя няма елементи, така че матрицата [k] [l] ще повдигне изключение


0 за отговор № 2

Разбрах, че се опитахте да инициализирате данните в матрицата, но преди да инициализирате, трябва да разпределите паметта за тази матрица.

променете този ред

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, но загубих оригиналната публикация] въведете описанието на изображението тук