De l'std::vector
reference page:
vecteurs peuvent être construits avec des valeurs en eux.
Vous pouvez essayer:
vector<vector<Distance*> > distanceMatrix(7, vector<Distance*>(7, NULL));
En outre, en ce qui concerne votre problème:
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
Lorsque vous codez premier à atteindre //1
, distanceMatrix[i]
décide de distanceMatrix[0]
mais vous n'avez pas appelé distanceMatrix.push_back(vector<Distance*>())
si vous font référence à une cellule non initialisée.
Pour corriger le code aurait été:
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);
}
Ce qui est encore bien pire que ma première suggestion.
Vous pouvez envisager d'utiliser boost :: ptr_vector ici - http: //www.boost.org/doc/libs/1_44_0/libs/ptr_container/doc/ptr_container.html –
Vous ne pouvez pas utiliser l'opérateur d'indexation en toute sécurité avant d'avoir rempli les entrées du vecteur. Changez-le à la sécurité-checked à() à vous aurez quelques exceptions utiles pour vous aider à corriger votre code. En résumé, vous devez pousser les objets vectoriels 'dans distanceMatrix avant de pouvoir y insérer des' Distance * '. –