我只是尝试使用C ++中的向量,列表和类来实现有向加权图,但是我收到了这个错误。它给我这个错误的那一行是第42:21行graph[u].push_back(edge(v, w));
#include <iostream>
#include <vector>
#include <list>
#include <stack>
using namespace std;
class edge
{
private:
int cost;
int vertex;
public:
edge(int vertex, int cost)
{
this->vertex = vertex;
this->cost = cost;
}
int getVertex() const
{
return vertex;
}
int getCost() const
{
return cost;
}
};
class Graph
{
private:
int V;
std::vector<std::list<edge> > *graph;
public:
Graph(int V);
void addEdge(int u, int v, int w);
void DFS();
};
Graph::Graph(int V)
{
this->V = V;
graph = new std::vector<std::list<edge> >(V);
}
void Graph::addEdge(int u, int v, int w)
{
graph[u].push_back(edge(v, w));
}
int main()
{
return 0;
}
感谢您的帮助!
答案 0 :(得分:0)
graph
是指向矢量的指针,而不是矢量,所以你想要:
(*graph)[u].push_back(edge(v, w));
但它似乎不需要成为指针。它不会像简单的矢量那样简单吗?它也会修复你的内存泄漏。