我正在尝试为C ++ Linux项目实现通用的分层树。
但我找不到任何标准的库树容器。
有存在吗?
提前致谢, 添
答案 0 :(得分:5)
这是一种使用STL容器创建分层树(没有特殊属性的n-ary)的简单方法。它不是预先构建的,但它很简单,并且利用了一些STL属性。要创建自己的搜索,你必须实现自己的算法,但这应该是相当轻松的。
template<typename T>
class TreeNode
{
public:
TreeNode()
{
}
TreeNode(const T& value)
: Value(value)
{
}
T Value;
std::list<TreeNode<T> > Children;
};
答案 1 :(得分:3)
STL设置和映射都在内部使用二进制树
答案 2 :(得分:2)
STD:地图&LT;&GT;使用树实现,您可以利用它。它是目前我能想到的唯一“标准库树容器”。
答案 3 :(得分:2)
Boost有一个PropertyTree容器,可能正是您正在寻找的容器。它基本上由存储值和任意数量的子节点的节点组成。 Boost非常接近标准。
http://www.boost.org/doc/libs/1_44_0/doc/html/property_tree.html
答案 4 :(得分:1)
默认情况下没有STL类。您可以使用STL组件编写自己的树类,或者您可以尝试使用类似STL的树库:
答案 5 :(得分:0)
没有可用于构建树结构的标准库容器。但是,如果你在理论上足够了解并且使用编程语言(在你的情况下是c ++),那么创建一个通用树并不是一项艰巨的任务。
首先创建通用(模板化)节点,为子节点添加两个指针(二叉树)或子节点指针列表(n-ary)。
struct Node
{
int data;
Node *left;
Node *right;
}
你去吧。创建一个实例,您就拥有了根节点。创建更多节点并将它们作为子节点附加到根节点。重复相同的。玩树木很棒!
你会在网上找到很多例子。有一个here 完全支持Niki的答案。
答案 6 :(得分:0)
这已经很晚了,但可能会帮助某人。 nlohmann json 或一般的 json,可用于树数据结构
https://github.com/nlohmann/json https://kezunlin.me/post/f3c3eb8/