C++:实现一个图
C++: implement a graph
我正试图使用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);
}
...
...
...
}
相关文章:
- 实现一个在集合上迭代的模板函数
- 在用于格式4的arm模拟器中实现功能时的一个问题
- 有没有比在库中添加一个并非由所有派生类实现的新虚拟函数更好的设计实践
- 为什么我们要为avl树实现返回一个指向节点的指针,而不是void函数
- 给定一个指向堆分配内存的指针,智能指针实现如何为其找到合适的释放函数?
- 为什么在排序链表上的这种合并实现总是将两个列表都设置为 NULL,而只有一个应该设置一个列表?
- 如何为位集找到/实现一个好的哈希函数
- C++哈希表中,两个相同的实现,但一个给出错误
- 如何将这两个函数组合成一个实现?
- 类中的数组变量C++导致"was not declared in this scope"实现文件的一个函数中错误,但在构造函数中不会导致错误
- 为什么这个快速排序实现给出了一个奇怪的输出
- C++:实现一个全局常量,其值由用户给出
- C++:实现一个接收lambda作为输入的高阶函数
- std::sort 一个实现了移动构造函数的类
- GMock - 用另一个实现模拟抽象类
- 有没有办法(C++)创建一个实现某些功能的模板类?
- 创建一个实现选项卡并可用作 QMainWindow 中的"central widget"的类
- 说出一个实现STL兼容序列容器的好指南)
- 一个C++实现的隐马尔可夫模型林安装错误
- 一个实现是否允许在同一地址放置两个相同的函数定义