我正在开发通用的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
};
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} {} }