在avl_set中访问节点的左子节点或右子节点

时间:2015-07-07 07:12:46

标签: c++ boost

我知道std::set是一个平衡的树,标准C ++禁止访问std::set中节点的子节点,但我想知道是否可以访问节点中的子节点和父节点 boost 库中的avl_set。如果它不可能,是否有任何可靠的库,如 boost ,其中包含允许此类操作的自平衡树?

1 个答案:

答案 0 :(得分:1)

是的,boost包含一个avl树实现(以及它的一些变体,IIRC)。

这是Boost Intrusive库的一部分。如果您习惯于常规(标准库)容器,那么这个库的语义可能有点不寻常。

实际上,该库附带了许多竞争树算法,您可以通过选择不同的模板参数类型进行切换。见http://www.boost.org/doc/libs/1_58_0/doc/html/intrusive/node_algorithms.html

另请注意,侵入式容器 - 非常自然 - 非常开放。您可以检查节点挂钩,或者实际上用您的custom value traits替换它们,这会使指针布局完全在您的控制之下。