如何自定义模板AVL树的不变式?

问题描述 投票:0回答:1

我正在开发通用的AVL树,并希望通过以下方式使用T的运算符默认值,但也可以选择替换自定义值,这样我就可以更好地控制不变的T,而不必将T放到盒子里。

我对C ++中的函数指针/对象不是很熟悉,我应该去哪里找?的std :: bind()的? lambda表达式?

template <typename T>
class avl_tree
{
   private:

   std::shared_ptr<avl_node<T>> root_ {nullptr};

   // > function object? uses T's > by default
   // < function object? uses T's < by default

   public: 

   avl_tree() = default;

   // avl_tree(?, ?) constructor accepting overloads
   //                for the < and > operators
};
c++ c++17 avl-tree
1个回答
3
投票
您应模仿std::set。将比较器作为模板参数:

std::set

并与]比较>

template <typename T, class Compare = std::less<Key>> class avl_tree { private: Compare comp; public: avl_tree() = default; avl_tree(Compare comp) : comp{comp} {} }

© www.soinside.com 2019 - 2024. All rights reserved.