Я пытаюсь реализовать представление списка смежности для графа, который вызывает значения из файла, первые два числа - это число вершин и количество ребер соответственно.Следующие строки содержат конечные точки ребер.
Например:
5 6
1 2
2 3
3 1
2 4
4 5
5 2
struct Edge {
int src, dest;
};
class Graph
{
public:
vector<vector<int>> adjList;
Graph(vector<Edge> const &edges, int N)
{
adjList.resize(N);
for (auto &edge : edges)
{
adjList[edge.src].push_back(edge.dest);
//adjList[edge.dest].push_back(edge.src);
}
}
};
int main(int argc, char **argv)
{
int vertices;
int num_edges;
vector<Edge> edges;
//string filename(argv[1]);
string filename("graph5.data");
ifstream readin;
readin.open(filename);
readin >> vertices >> num_edges;
for (int i = 0; i < num_edges; i++) {
int a, b;
readin >> a >> b;
edges.push_back({ a,b });
}
readin.close();
Graph graph(edges, vertices);
printGraph(graph, vertices);
return 0;
}
Я получаю сообщение об ошибке в виде
"Ошибка отладочного подтверждения!
Программа: C .....
Выражение: векторный индекс находится вне диапазона "
, и в" adjList [edge.src] .push_back (edge.dest "выдается исключение).); ".
Я считаю, что в моих векторах есть ошибка определения размера, но я не уверен, где и как ее исправить.