【发布时间】:2010-11-11 16:07:42
【问题描述】:
我遇到过几次这个问题,想知道是否有一个简单的方法或模式可以用来解决它。
想象一个树结构,其中每个节点都包含一个指向子节点的 STL 容器(向量)。我希望客户端代码能够遍历这棵树,并遍历子容器以访问其他部分。
我的问题是我想保持对节点的封装,同时让客户端轻松查看该节点的所有子节点。我还想确保如果客户端获得对树中根节点的 const 引用,那么对树的后续部分的所有访问也是 const。
我应该尝试为我的节点类型创建一个迭代器类,让一个节点方法返回向量迭代器,还是我缺少更优雅的模式?
编辑:我想再次强调,虽然我看到了一些好的想法,但我有指向其他节点的指针容器。返回 vector<node *>::const_iterator 不会阻止客户端在节点上调用非常量方法。它只保护指针本身不指向不同的对象。
【问题讨论】:
标签: c++ design-patterns stl tree iterator