关闭

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

标签: stl算法谓词一元谓词
1245人阅读 评论(0) 收藏 举报
分类:
谓词:
一元函数对象:函数参数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;
}

0
0
查看评论

一元函数对象和一元谓词

谓词: 一元函数对象:函数参数1个; 二元函数对象:函数参数2个; 一元谓词 函数参数1个,函数返回值是bool类型,可以作为一个判断式 谓词可以使一个仿函数,也可以是一个回调函数。 二元谓词 函数参数2个,函数返回值是bool类型   一元谓词函数举例如下: 1,判断给出的string对...
  • bbs375
  • bbs375
  • 2016-09-30 10:07
  • 296

stl算法设计理念_一元函数对象和一元谓词

传智扫地僧课程学习笔记。 函数对象,一元谓词,这些才听,觉得有点陌生, 函数对象: 重载函数调用操作符的类,其对象常称为函数对象(functionobject),即它们是行为类似函数的对象。一个类对象,表现出一个函数的特征,就是通过“对象名+(参数列表)”的方式使用一个类对象,如...
  • qq_18973645
  • qq_18973645
  • 2017-01-18 22:24
  • 211

自定义一元谓词和二元谓词以及使用方法

不罗索,代码说话using namespace std;template class A:public unary_function{public: A(T m):x(m){} bool operator()(T m)const { return m==x; }private: T x;};tem...
  • hanyuwei0
  • hanyuwei0
  • 2010-01-06 16:20
  • 1718

标准库算法探索(一)——一元谓词定制算法

测试引言 测试代码 测试结果 测试结论测试引言之前在使用智能指针的时候发现,指针并不能适用于标准库中那些使用默认==符号进行比较的算法,但是标准库还提供了可定制的算法(《C++ Primer》第5版 P770)测试代码#include <iostream> #include <ve...
  • Sephiroth_Ace
  • Sephiroth_Ace
  • 2017-06-11 16:21
  • 151

C++ - 算法(algorithm) 的 谓词(predicate) 详解

算法(algorithm) 的 谓词(predicate) 详解   算法谓词, 即标准库算法传递的参数, 可以指定算法的操作, 如std::sort, 默认是从小到大, 通过谓词可以修改从大到小.   1. 函数(function)谓词 通过传递函数名, 匹配二元谓词(bina...
  • u012515223
  • u012515223
  • 2013-11-11 20:12
  • 6208

STL中的谓词

template typename iterator_traits::difference_type count_if(InIt first,InIt last,Pred pr); 在这个模板中的pr是一个谓词,那么什么叫谓词呢? 首先我们看一下和count_if同源的count(InIt &#...
  • taotao693
  • taotao693
  • 2015-12-01 16:34
  • 443

函数对象和谓词

在C++中,在应用程序运行阶段存在的所有实体都是对象,因此struct和class也可用作函数,这称为函数对象。注意,函数也可通过函数指针来调用,他们也是函数对象。     从概念上说,函数对象是用作函数的对象;但从实现上说,函数对象是实现了operator...
  • u010771437
  • u010771437
  • 2016-01-06 11:19
  • 491

什么是谓词

根据传统语言学理论,汉语的体词包括名词,处所词,时间词,方位词,数词,量词和一部分指代词;汉语的谓词包括动词,形容词和一部分指代词。 谓词 用来描述或判定客体性质、特征或者客体之间关系的词项。 例如: "猫是动物"一句中的"是动物"就是一个谓词,而...
  • Lu_ming
  • Lu_ming
  • 2010-07-21 10:56
  • 2330

STL算法设计理念 - 二元函数,二元谓词以及在set中的应用

demo 二元函数对象 #include #include #include #include using namespace std; template class SumVector { public: T operator()(T t1, T t2) // 二元函数对象 { ...
  • zyq522376829
  • zyq522376829
  • 2015-07-09 19:41
  • 1045

C++ 中谓词是什么?

个人也是初学根本就不了解谓词是什么意思,通过下面的例子大家自己体会吧。 下面程序演示了count_if();该程序创建一个包含数字1-19的矢量,然后统计能够被3整除的元素个数。为了达到这个目的,程序首先创建了一个称为dividesby3()的一元谓词,如果谓词的参数能够被3整除,该谓词返...
  • wesleyluo
  • wesleyluo
  • 2010-05-19 13:14
  • 5495
    个人资料
    • 访问:420749次
    • 积分:8177
    • 等级:
    • 排名:第2972名
    • 原创:401篇
    • 转载:30篇
    • 译文:11篇
    • 评论:87条
    博客专栏