错误:没有可行的从'edge'到'const value_type'的转换?

时间:2016-05-14 21:55:19

标签: c++ list oop vector graph

我只是尝试使用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;
}

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

graph是指向矢量的指针,而不是矢量,所以你想要:

(*graph)[u].push_back(edge(v, w));

但它似乎不需要成为指针。它不会像简单的矢量那样简单吗?它也会修复你的内存泄漏。