函数定义中的Compare是一个函数的引用
如果需要指明模板参数,应该是什么?简单点说,上图红圈处应该填什么?
这是做参数的函数
PS:版本是C++98
###bool(int, int) 如果我没记错的话。。。
###linked_list<int>* merge_two_linkedlists_asc<int, bool (*)(int, int)>(linked_list<int>* lists1, linked_list<int>* lists2, compare_int)
- T 可能是各种各样的自定义类型,因此需要调用者提供链表合并时元素T的比较方式。
Compare &_cmp
一个可调用对象,可能的类型:- 函数原型: bool cmp(int, int) {}
- 函数指针: bool (*cmp)(int, int);
- lambda 表达式: auto cmp = &->bool{...}
- 重载了()运算符的类: class cmp { bool operator(int, int){...} };
- std::bind
- std::function
- 使用”引用“是避免 _cmp 实参是非函数、指针而是闭包、自定义对象的低效拷贝。