【发布时间】:2010-09-06 08:38:12
【问题描述】:
如何在 C++ 中创建使用迭代器而不是指针的树数据结构?我在 STL 中找不到任何可以做到这一点的东西。我想做的是能够像这样创建和操作树:
#include <iostream>
#include <tree>
using namespace std;
int main()
{
tree<int> myTree;
tree<int>::iterator i = myTree.root();
*i = 42;
tree<int>::iterator j = i.add_child();
*j = 777;
j = j.parent();
if (i == myTree.root() && i == j) cout << "i and j are both pointing to the root\n";
return 0;
}
谢谢,tree.hh 似乎正是我想要的。
如果这是为了获得利益 一个数据结构持有任意 索引类型,针对搜索进行了优化 并且擅长插入然后考虑 使用地图。
地图是一个关联容器, 具有相同的性能保证 树的那些:对数 搜索,对数插入, 对数删除,线性空间。 在内部,它们经常被实施 作为红黑树,虽然那是 不是保证。尽管如此,作为一个 STL 用户 你应该关心的是 STL 的性能保证 算法和数据结构。 它们是否被实现为树 或者小绿人不重要 给你。
我不确定我是否需要地图,但感谢您提供的信息。我会记得尽可能使用地图而不是实现树。
【问题讨论】: