со справочной страницы std::vector
:
Векторы могут быть построены с некоторыми значениями в них.
Вы можете попробовать:
vector<vector<Distance*> > distanceMatrix(7, vector<Distance*>(7, NULL));
Также по вашей проблеме:
vector<vector<Distance*> > distanceMatrix;
for (int i = 0; i < 7 ; i++)
for (int j = 0; j < 7 ; j++)
distanceMatrix[i][j].push_back(NULL); //1
Когда вы впервые набираете код //1
, distanceMatrix[i]
разрешается до distanceMatrix[0]
, но вы не вызывали distanceMatrix.push_back(vector<Distance*>())
, поэтому вы ссылаетесь на неинициализированную ячейку.
Чтобы исправить код был бы:
vector<Distance*> vec;
for (int j = 0; j < 7 ; j++)
vec.push_back(NULL);
vector<vector<Distance*> > distanceMatrix;
for (int i = 0; i < 7 ; i++)
{
distanceMatrix.push_back(vec);
}
Что все еще намного хуже, чем мое первое предложение.