我在一个问题中使用dfs
,但是直到现在我还没有在主菜单中调用dfs
,并且我的程序崩溃了。最近我在c
中编程,现在我切换到{ {1}},
所以我是cpp
的新手,我知道向量中的错误之处,请告诉我可以改善的地方
我知道向量可以自动在那增加大小。
cpp
答案 0 :(得分:4)
您的程序由于访问未分配的内存而崩溃。正确的方法是
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)
....
或者,您可以使用aggregate initialization直接初始化矢量的矢量。
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
};
或emplace每行向量到向量的向量。
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});
答案 1 :(得分:3)
向量的大小按照您声明的方式为零。
您可以做的是声明带有大小的向量。
int v = 10;
std::vector<std::vector<int>>graph(v);
graph[1].push_back(2);
这将起作用。