STL算法设计理念 - 谓词,一元谓词demo
2015-07-09 18:56
381 查看
谓词:
一元函数对象:函数参数1个;
二元函数对象:函数参数2个;
一元谓词 函数参数1个,函数返回值是bool类型,可以作为一个判断式
谓词可以使一个仿函数,也可以是一个回调函数。
demo 一元谓词
一元函数对象:函数参数1个;
二元函数对象:函数参数2个;
一元谓词 函数参数1个,函数返回值是bool类型,可以作为一个判断式
谓词可以使一个仿函数,也可以是一个回调函数。
demo 一元谓词
#include <iostream> #include <cstdio> #include <vector> #include <algorithm> using namespace std; template <typename T> class IsDiv { public: IsDiv(const T d) { divisor = d; } bool operator()(T &t) // 一元谓词 { return (t % divisor == 0); } protected: private: T divisor; }; void play01() { vector<int> v; for (int i = 10; i < 25; ++i) { v.push_back(i); } int a = 4; IsDiv<int> isDiv(a); find_if(v.begin(), v.end(), isDiv); //find_if(v.begin(), v.end(), IsDiv<int>(4)); // 也可以这样写 /* find_if()函数原型 template<class _InIt, class _Pr> inline _InIt find_if(_InIt _First, _InIt _Last, _Pr _Pred) { // find first satisfying _Pred _DEBUG_RANGE(_First, _Last); _DEBUG_POINTER(_Pred); return (_Rechecked(_First, _Find_if(_Unchecked(_First), _Unchecked(_Last), _Pred))); } */ // find_if的返回值值一个迭代器 vector<int>::iterator it = find_if(v.begin(), v.end(), isDiv); if (it == v.end()) { cout << "fail\n"; } else { cout << "success " << *it << endl; } } int main() { play01(); return 0; }
相关文章推荐
- NYOJ 46-最少乘法次数(数论)
- 自定义的div弹出窗口
- STL算法设计理念 - 谓词,一元谓词demo
- WordPress 插件推荐
- 杨辉三角
- MSP430F149学习之路——PWM信号
- CentOS 6.5配置SSH免密码登录
- poj 2503 Babelfish
- Android Studio好处(与eclipse相比)
- 关于网页右下角总出广告解决办法
- 三极管典型开关电路
- maven导出项目依赖的jar包
- Google开发规范
- Python使用opencv
- C语言中关于哪些数据放在哪些区?
- 实现图片垂直居中的方法
- 设置语言环境为en
- 关于U盘启动操作系统《30天自制操作系统》
- C#学习笔记(八):扩展方法
- C++构造函数