我正在尝试使用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);
我打赌这是愚蠢的,谢谢你的帮助。
答案 0 :(得分:9)
来自std::vector
reference page:
可以使用其中的某些值构建向量。
您可以尝试:
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);
}
这仍然比我的第一个建议差得多。
答案 1 :(得分:1)
由于矩阵一开始是空的,你需要push_back
每个值和每一行,而不是取决于它在矩阵中的位置:
vector<Distance*> row;
for(int j=0; j < 7; j++)
row.push_back(NULL);
vector<vector<Distance*> > distanceMatrix;
for(int i=0; i < 7; i++)
distanceMatrix.push_back(row);