gpt4 book ai didi

c++ - C++中树结构上的自定义迭代器

转载 作者:行者123 更新时间:2023-11-28 07:46:27 25 4
gpt4 key购买 nike

我正在用这样的节点类在 C++ 中实现树结构:

class Node {
protected:
// relations
Node *_parent;
std::vector<Node*> _children;

public:
// some example method
void someMethod(Node *node) {

// do something with *node

for (int i = 0; i < node->_children; i++) {
_children[i]->myFunction;
}
}
}

现在,为了在我的树中的节点上工作,我正在实现递归函数,例如我的示例中的 someMethod

它有效,但我最终为在我的树上工作的每个新函数一遍又一遍地编写相同的递归代码。

有没有像我在普通数组上那样迭代树结构的通用方法?返回下一个对象的一些方法,直到我完成整个分支。

编辑:

感谢到目前为止发表评论的所有人,在你们的帮助下我可以缩小问题范围。根据我的理解(我是 c++ 的新手),我需要一个迭代器类来封装遍历我的树的代码。

访问所有树成员应该就这么简单:

for (Node<Node*>::iterator it = _node.begin(); it != _node.end(); ++it) {
Node *node = *it;
// do something with *node
}

现在的问题是:

如何实现这样的迭代器?

最佳答案

将函数指针传递给返回您正在寻找的节点的递归函数。

这就是 C/C++ 中函数指针和函数指针数组的强大之处。

关于c++ - C++中树结构上的自定义迭代器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14798614/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com