Что вы пытаетесь сделать
Вы намереваетесь увеличить матрицу смежности n*n
до (n+1)*(n+1)
, где n
равно vertices.size()-1
, после вашего начального push_back()
в векторе vertices
.
Это выглядит (почти) хорошо:
- Ваш первый
for
-тип изменяет размеры n
существующих внутренних векторов, добавляя де-факто отсутствующий столбец.
- Затем вы изменяете размер внешнего вектора, который добавляет созданный по умолчанию (пустой) вектор в конце.
- Затем во втором
for
-цикле вы пытаетесь инициализировать новый внутренний вектор, непосредственно присваивая значение его элементам.
Что здесь не так?
К сожалению, когда вы делаете этот последний шаг, последний внутренний вектор все еще пуст. Таким образом, ваш второй цикл for использует индекс вне диапазона i
, который вызывает UB (возможный симптом: ошибка сегмента).
Как это решить?
Все, что вам нужно сделать, это изменить размер последнего внутреннего вектора перед вторым циклом:
...
adj_matrix.resize(vertices.size());
adj_matrix[vertices.size()-1].resize(vertices.size()); //<<-- this is missing !
for (unsigned i = 0; i < vertices.size(); i ++)
...