C++:实现一个图

C++: implement a graph

本文关键字:一个 实现 C++      更新时间:2023-10-16

我正试图使用C++中的一个类来实现一个有向图。我在构造图和添加边时遇到了问题。以下是我的代码片段:

class Graph {
public:
   typedef unsigned node;
   Graph(size_t n)
    {
        vector<list<int>> graph(n, list<int>());
    }
    void make_edge(node node1, node node2)
    {
        size_t n;
        Graph graph(n);  // error here
        graph[node1].push_back(node2);
    }
...
...
...
}

编辑:我更改了参数及其类型。现在,我在同一个地方得到了一个错误,上面写着"使用未声明的标识符‘graph’。"

您有一个以size_t为参数的构造函数,但在make_edge方法中,您试图使用一个参数为(int, list<int>())的构造函数创建一个Graph变量。

您缺少接受这两种参数类型的构造函数,需要提供它。

您的构造函数有一个名为"graph"的本地vector。然后make_edge创建一个新的Graph(具有不确定的大小)并将其称为"图",然后尝试对该Graph进行索引。

我怀疑您打算将构造函数中的局部变量作为成员变量,并在make_edge中使用它。

像这样:

class Graph {
public:
    typedef unsigned node;
    vector<list<int>> graph;
    Graph(size_t n) 
      : graph(n, list<int>())
    {
    }
    void make_edge(node node1, node node2)
    {
        graph[node1].push_back(node2);
    }
...
...
...
}