C++;:实现图形 我试图用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); } ... ... ... } 类图{ 公众: typedef无符号节点; 图表(大小) { 向量图(n,list()); } void make_边(节点1、节点2) { 尺寸; 图(n);//此处出错 图[node1]。推回(node2); } ... ... ... }

C++;:实现图形 我试图用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); } ... ... ... } 类图{ 公众: typedef无符号节点; 图表(大小) { 向量图(n,list()); } void make_边(节点1、节点2) { 尺寸; 图(n);//此处出错 图[node1]。推回(node2); } ... ... ... },c++,C++,编辑: 我更改了参数及其类型。现在我在同一个地方得到了一个错误,上面写着“使用未声明的标识符‘图形’”您得到了一个构造函数,该构造函数将size\u t作为参数,但是在make\u edge方法中,您试图使用参数(int,list())的构造函数创建一个图形变量 您缺少接受这两种参数类型的构造函数,您需要提供它。您的构造函数有一个名为“graph”的本地向量。然后make_edge创建一个新的图(大小不确定)并将其称为“Graph”,然后尝试为该图编制索引 我怀疑您打算将构造函数中的局部变量作为

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

您得到了一个构造函数,该构造函数将
size\u t
作为参数,但是在
make\u edge
方法中,您试图使用参数
(int,list())
的构造函数创建一个
图形
变量


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

您的构造函数有一个名为“graph”的本地向量。然后
make_edge
创建一个新的
图(大小不确定)并将其称为“Graph”,然后尝试为该
图编制索引

我怀疑您打算将构造函数中的局部变量作为成员变量,并在
make\u 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);
    }
...
...
...
}
类图{
公众:
typedef无符号节点;
矢量图;
图表(大小)
:图形(n,list())
{
}
void make_边(节点1、节点2)
{
图[node1]。推回(node2);
}
...
...
...
}

事实上,没有一个构造函数可以接受
int
std::list
。你有一个只有一个参数的构造函数,但你试图用两个参数来调用它。构造函数就是名为
Graph
的函数。查看它所采用的参数,然后查看在“此处出错”处传递给它的参数。注意:
list()
temporary是不必要的,
std::vector
default构造其内容。