函数对象
- 重载函数调用操作符的类,其对象常称为函数对象。
- 函数对象使用重载的()时,行为类似函数调用,也叫仿函数。
函数对象(仿函数)本质上是一个类,不是一个函数。
返回bool类型的仿函数称为谓词。
排序
要求:二维数组中对其中的一维数组排序。从大到小排,索引为0的排序优先级最高,索引为1的优先级次之。
输入:3,5,2 3,8,1 8,9,3
输出:8,9,3 3,8,1 3,5,2
#include <iostream>
#include <vector>
#include<algorithm>
using namespace std;
class MyCompare
{
public:
bool operator()(vector<int>& v1,vector<int>& v2)
{
if (v1[0] == v2[0]) return v1[1] > v2[1]; //最高优先级相同时,按第二优先级排序
return v1[0] > v2[0];
}
};
vector<vector<int>> test01(vector<vector<int>>& a) {
// vector<vector<int>> res;
sort(a.begin(), a.end(), MyCompare());
return a;
}
int main() {
vector<vector<int>> a = {{3,5,2},{3,8,1},{8,9,3}};
vector<vector<int>> b = test01(a);
for (auto s : b) {
cout<<s[0]<<s[1]<<s[2]<<endl;
}
cout<<" "<<endl;
return 0;
}