码迷,mamicode.com
首页 > 编程语言 > 详细

STL算法设计理念 - 谓词,一元谓词demo

时间:2017-06-03 14:10:52      阅读:181      评论:0      收藏:0      [点我收藏+]

标签:类型   div   pen   deb   include   pre   post   stl   返回   

谓词:
一元函数对象:函数參数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

标签:类型   div   pen   deb   include   pre   post   stl   返回   

原文地址:http://www.cnblogs.com/wzzkaifa/p/6936940.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!