【发布时间】:2020-08-03 23:54:40
【问题描述】:
我有这些向量如下
vector< vector< Arc * > * > _adjacences;
vector <int> list[_adjacences.size()];
vector <int> listD[_adjacences.size()];
vector < vector <int> > matrix( _adjacences.size(), vector<int>(_adjacences.size(),0 ));
vector < vector <int> > shortPath( _adjacences.size(), vector<int>(_adjacences.size(),0 ));
我想将邻接列表制作成邻接矩阵
弧包含这些:
int sommetArrive;
int longueur;
string nom;
我尝试制作两个向量,一个用于距离,另一个用于窥视
for (unsigned i = 0; i < _adjacences.size(); i++){
for (auto j : *_adjacences[i]){
list[i].push_back(j->sommetArrive);
listD[i].push_back(j->longueur);
}
}
然后我制作邻接矩阵,这是我做错事的地方
for (int i = 0; i < _adjacences.size(); i++) {
for (auto j : list[i]){
for (auto k : listD[i]){
matrix[i][j] = k;
}
}
}
而不是得到这个:
0 0 0 0 0 0 0 0 0 0 0 0 0 120 0 62
0 0 253 0 0 0 0 0 0 0 204 0 0 0 0 0
0 53 0 12 0 0 105 0 0 0 0 0 0 0 0 0
0 0 15 0 38 0 0 108 0 0 0 0 0 0 0 0
0 0 0 93 0 123 0 0 113 0 0 0 0 0 0 0
0 0 0 0 158 0 0 0 0 118 0 0 0 0 0 0
0 0 97 0 0 0 0 17 0 0 0 87 0 0 0 0
0 0 0 103 0 0 3 0 53 0 0 0 73 0 0 0
0 0 0 0 153 0 0 33 0 113 0 0 0 0 0 0
0 0 0 0 0 55 0 0 91 0 0 0 0 72 0 0
我最终得到了这个
0 0 0 0 0 0 0 0 0 0 0 0 0 62 0 62
0 0 204 0 0 0 0 0 0 0 204 0 0 0 0 0
0 105 0 105 0 0 105 0 0 0 0 0 0 0 0 0
0 0 108 0 108 0 0 108 0 0 0 0 0 0 0 0
0 0 0 113 0 113 0 0 113 0 0 0 0 0 0 0
0 0 0 0 118 0 0 0 0 118 0 0 0 0 0 0
0 0 87 0 0 0 0 87 0 0 0 87 0 0 0 0
0 0 0 73 0 0 73 0 73 0 0 0 73 0 0 0
0 0 0 0 113 0 0 113 0 113 0 0 0 0 0 0
0 0 0 0 0 72 0 0 72 0 0 0 0 72 0 0
重复相同的数字而不是传递给下一个元素 k
我做错了什么?
【问题讨论】: