我正在尝试使用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);
Run Code Online (Sandbox Code Playgroud)
我敢打赌这是愚蠢的,谢谢你的帮助.
从std::vector 参考页面:
可以使用其中的一些值来构造向量.
你可以尝试:
vector<vector<Distance*> > distanceMatrix(7, vector<Distance*>(7, NULL));
Run Code Online (Sandbox Code Playgroud)
另外,关于你的问题:
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
Run Code Online (Sandbox Code Playgroud)
当您编码第一个到达时//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);
}
Run Code Online (Sandbox Code Playgroud)
这比我的第一个建议还要糟糕得多.