如何在 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 算法和数据结构的性能保证。无论它们是作为树木还是小绿人来实现,对你来说都无关紧要。
我不确定我是否需要地图,但感谢您提供的信息。我会记得尽可能使用地图而不是实现树。