Я пытаюсь перебирать вектор векторов соседей и просто отображать его содержимое.Итерация через подвектор
Контекст: Графическая теория. neighbors [i] - это вектор, содержащий все смежные вершины к вершине i. Для этого примера граф представляет собой полный граф $ K_5 $ из 5 вершин, все связанные друг с другом.
Проблема: Мне нужен итератор для итерации через суб-векторы, так как я (не должен) знать их длину, но я получаю неправильный ответ.
Моя попытка
for(int i = 0; i < num_vertices_h; ++i) {
for(vector<int>::iterator it = neighbors[i].begin(); it != neighbors[i].end(); ++it) {
cout << neighbors[i][*it] << " ";
}
cout << endl;
}
(неправильном) Выход
2 3 4 -1454373456
0 3 4 -1454373584
0 1 4 0
0 1 2 -1454373744
0 1 2 3
Если я просто обмануть, пользуясь тем, что я знаю, каждый суб-вектор имеет 4 записи, я могу избегать итератора:
Cheat Solution
for(int i = 0; i < num_vertices_h; ++i) {
for(int j = 0; j < num_vertices_h -1; ++j) {
cout << neighbors[i][j] << " ";
}
cout << endl;
}
Правильный выход
1 2 3 4
0 2 3 4
0 1 3 4
0 1 2 4
0 1 2 3
Заменить 'neighbors [i] [* it]' с помощью просто '* it'. – Quentin