Ваша программа падает из-за доступа к нераспределенной памяти.Правильный путь:
std::vector<std::vector<int>> graph(5); // allocates 5 rows of vector of vectors
^^^^
Во-вторых, в индексировании массива C ++, начиная с 0
до n-1
.Поэтому вам нужно
graph[0].push_back(2); // element at (0,0)
graph[0].push_back(3); // element at (0,1)
graph[1].push_back(6); // element at (1,0)
graph[1].push_back(4); // element at (1,1)
....
В качестве альтернативы, вы можете напрямую инициализировать вектор векторов , используя совокупную инициализацию .
std::vector<std::vector<int>> graph
{
{2, 3}, // first row of vector
{4, 5}, // second row of vector
{6}, // third row of vector
{7, 8, 9} // forth row of vector
};
или вставьте каждой строки вектора в вектор векторов .
using Row = std::vector<int>;
std::vector<Row> graph;
graph.emplace_back(Row{ 2, 3 });
graph.emplace_back(Row{ 4, 5 });
graph.emplace_back(Row{ 6 });
graph.emplace_back(Row{7, 8, 9});