首页 > 代码库 > STL算法设计理念 - 谓词,一元谓词demo
STL算法设计理念 - 谓词,一元谓词demo
谓词:
一元函数对象:函数參数1个;
二元函数对象:函数參数2个;
一元谓词 函数參数1个。函数返回值是bool类型,能够作为一个推断式
谓词能够使一个仿函数,也能够是一个回调函数。
一元函数对象:函数參数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; }
STL算法设计理念 - 谓词,一元谓词demo
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。