作为我的大学分配给我的练习的一部分,我编写了一个小的 Graph 实现,遵循这个标题。
class Node {
private:
std::string name;
std::vector<Node*> children;
public:
Node(const std::string& name="");
virtual ~Node();
}
Run Code Online (Sandbox Code Playgroud)
在为析构函数编写代码时~Node()
,我注意到当图形包含循环时我的实现失败。到目前为止,这是我的实现,如果图形包含循环,这显然不起作用。
Node::~Node() {
for (Node* n : children) {
delete n;
n = NULL;
}
children.clear();
}
Run Code Online (Sandbox Code Playgroud)
我不确定如何最优雅地编写一个可以处理图中循环的析构函数?
请注意,我的任务是专门编写一个递归析构函数。谢谢您的回答!