仿函数类似于以类为基础的函数,比如下面这个例子
class Pow {
public:
double operator()(double x, int y) {
return pow(x, y);
}
};
我们可以通过类名直接调用这个仿函数
有的时候仿函数会起到奇效,比如给vector容器中的元素进行排序
class compareVec {
public:
compareVec(bool b = true):flag{b}{}
bool operator()(int a, int b) {
if (flag == true)
return a > b;
else
return a < b;
}
private:
bool flag;
};
int main() {
vector<int> vec = { 3,1,6,8,2,11 };
sort(vec.begin(), vec.end(), compareVec(false)); //或者true
system("PAUSE");
}
上面这个例子可以通过仿函数决定正序排序还是倒序排序