如何使用仿函数?
1.通过对象调用
printf("%d\n", func(2));
2.通过临时对象调用
funcMode(3)(4);
3是构造funcMod使用的,4是传入的参数。
3.在STL中使用,传入一个对象,对应的算法会自动调用仿函数。
#include <stdio.h>
#include <vector>
#include <algorithm>
class funcMod {
private:
int m_dev;
public:
funcMod(int dev): m_dev(dev) {}
bool operator()(int x) { return (x % m_dev == 0); }
};
int main()
{
funcMod func(3);
printf("%d\n", func(2)); //example1
printf("%d\n", func(3));
printf("%d\n", funcMod(3)(4)); //example2
printf("%d\n", funcMod(3)(6));
std::vector<int> vec = {2,3,4,5,6,9,12}; //example3
int count = std::count_if(vec.begin(), vec.end(), func);
printf("count:%d\n", count);
count = std::count_if(vec.begin(), vec.end(), funcMod(3));
printf("count:%d\n", count);
return 0;
}