#include <iostream>
#include <algorithm>
#include <functional>
#include <vector>
using namespace std;
//缺省版本
bool count_f(const int a)
{
return a > 8;
}
//ptr_fun版本
bool greater_f(const int a, const int b)
{
return a > b;
}
//构造的类模板版本
struct greater_if : public binary_function<int, int, bool>
{
bool operator()(const int& _Left, const int& _Right) const
{
return (_Left > _Right);
}
};
template <typename PF>
void f(std::vector<int>& v, PF pf)
{
int count = std::count_if(v.begin(), v.end(), pf);
std::cout << count << std::endl;
}
int main()
{
std::vector<int> v;
for (int i=0; i<10; i++)
v.push_back(i);
//普通函数
f(v, count_f); //大于8的元素
f(v, bind1st(ptr_fun(&greater_f), 8)); //greater_f(8,v) 小于8的元素
f(v, bind2nd(ptr_fun(&greater_f), 8)); //greater_f(v,8) 大于8的元素
//STL仿函数
f(v, bind1st(greater<int>(), 8)); //greater<int>(8,v) 小于8的元素
f(v, bind2nd(greater<int>(), 8)); //greater<int>(v,8) 大于8的元素
f(v, bind1st(greater_if(), 8)); //greater_(8,v) 小于8的元素
f(v, bind2nd(greater_if(), 8)); //greater_(v,8) 大于8的元素
system("pause");
return 0;
}
适配器初识
最新推荐文章于 2024-10-14 23:40:14 发布
1221

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



