【发布时间】:2018-10-02 05:21:42
【问题描述】:
我正在创建一个类 -- 一个 BST -- 可以比较需要比较器的模板节点,例如 std::less。
树是这样的:
template<typename T, typename comparator>
class tree
{
private:
comparator compare;
public:
explicit tree (comparator functor);
};
但我似乎找不到应该在我的应用程序中输入的模板类型。
tree<int> my_bst (std::less<int>);
error: wrong number of template arguments (1, should be 2)
bst::tree<int> my_bst (std::less<int>);
这很有意义,因为我的模板类型不完整。
我应该如何分析我的构造函数?
模板的属性是什么?因为我发现的只是cppreference 上的sort 页面。
通常,我可以像这样使用sort
std::vector<int> v;
std::sort(v.begin (), v.end (), std::less<>());
less 的特化是怎么推导出来的?我怎样才能复制它?
【问题讨论】:
-
不要将 template 参数与 constructor 参数混淆。试试
tree<int, std::less<int>> my_bst(std::less<int>);。