【发布时间】:2020-08-07 05:19:32
【问题描述】:
我的目的是创建一个邻接列表来表示一个图形,我选择使用向量来实现它。我的问题是图形的顶点和边的数量并不总是相同的,它是在输入中给出的。因此,我尝试动态声明向量数组。这是我的代码(其中 N 代表边数):
int N;
vector <int> *arr;
arr = new vector <int> [N];
cin >> N;`
每次我尝试处理一个向量(ig arr[0].push_back(3);)时,我都会遇到分段错误。我做错了什么:(
编辑:N 代表 节点 的数量,而不是边。这不会影响分割错误,而只会影响用向量表示图的方式
【问题讨论】:
-
首先在用户输入值之前使用
N。其次,你为什么要在这里使用new[]?如果您需要动态尺寸,只需使用vector<vector<int>> -
您确定在调用
new之前要初始化n吗?发布给你一个错误的确切代码。 -
既然您似乎对
std::vector很熟悉,为什么不使用它来代替new[]?您可以使用std::vector<std::vector<int>>。
标签: c++ memory vector segmentation-fault new-operator