仿函数
一般仿函数(又称函数对象)都是用来给一些库函数传入Compare方法的,最常用的是
// 自定义比较函数对象
struct Compare {
bool operator()(const int& a, const int& b) const {
return a > b; // 降序排序
}
};
int main() {
// 创建一个set,使用函数对象Compare作为比较函数
set<int, Compare> myset;
int arr[] = {4, 2, 1, 5, 3};
int n = sizeof(arr) / sizeof(arr[0]);
//用sort对任意容器排序
sort(arr, arr + n, Compare());
return 0;
}
我的疑惑是仿函数是怎么被使用的呢?为什么set<int, Compare>里Compare不加括号,而sort(arr, arr + n, Compare())函数里的Compare要带括号?其次是既然普通函数也能被当比较函数,为什么要用仿函数?
1. 加不加()问题
-
sort(arr, arr + n, Compare())里的Compare()其实是创建了Compare类的一个匿名对象,将这个对象作为参数传入了sort函数
-
set<int

本文探讨了C++中的仿函数,主要集中在加不加括号的问题、仿函数作为参数如何使用,以及为何选用仿函数而非普通函数作为比较函数。通过示例,解释了在sort函数中使用仿函数的原因,以及仿函数提供的灵活性和便利性。
966

被折叠的 条评论
为什么被折叠?



