我想为Binary Search Tree构建一个模板化类,在其中用户可以通过传递lambda或functor作为模板参数来选择其他比较函数。
我无法在GCC或Microsoft编译器上进行编译。
我假设函数对象与其他任何对象一样,可以以lambda形式进行默认初始化。我试图找到满足我要求的示例,但未能做到。我还尝试对函数类使用“使用”。
template <class Object>
using comparer = std::function<bool(const Object& a, const Object& b)>;
/*
BST class
*/
template <class Object, comparer<Object> comp = [](const Object& a, const Object& b){ return a < b; }>
class BinarySearchTree
{
protected:
class Node
{
//Nodes used to store data.
};
Node* root;
public:
BinarySearchTree() : root(NULL) {}
//I will use the comp function in the following functions.
void insert(const Object& x);
Node* find (const Object& x) const;
void remove(const Object& x);
};
它没有按预期编译。我第一次使用高级c ++功能,因此无法准确识别问题。 我收到错误“模板参数列表中'struct'的定义”。