STL中的谓词
来源:互联网 发布:fedora centos 很像吗 编辑:程序博客网 时间:2024/06/07 00:26
template<class InIt,class Pred,class Dist>
typename iterator_traits<InIt>::difference_type count_if(InIt first,InIt last,Pred pr);
在这个模板中的pr是一个谓词,那么什么叫谓词呢?
首先我们看一下和count_if同源的count(InIt first,InIt last,const T& val)函数,这个函数的意思呢是这样的:如果*(first+N)==val则返回true,此时执行n++,在此operator==必须是对它的操作数进行相等关系的判断。所以这个函数的返回值是与【0,last-first)的所有元素与val比较相等的元素个数!
当然有些情况下,我们要判断的逻辑不是等于而是大于,那该怎么办呢?显然上面的函数是不行的,因此聪明的设计人员便想到了另外的一种方式来表达这种功能,于是便有了count_if()的存在,而它与count()函数的区别也正是实现了这一功能的所在。在谓词pr中我们可以自己设计相应的功能,以此来完成我们想要的结果!那么自然我们就可以总结出来了,所谓的谓词的含义:用来描述或判定客体性质、特征或者客体之间关系的词项(来自百科)。说得通俗点就是:某种动作或者说操作,例如上面的“==”就是一种动作或者说操作,这也是一种谓词。而在count_if这里的谓词是广义的,它没有规定具体的动作,而是等着user去实现这种动作。
count_if()的一个实例:
#include<iostream>
#include<algorithm>
using namespace std;
bool big_0(int a){
if(a==3)
return true;
return false;
}
int main(){
int a[]={2,1,3,5,4,6,7};
cout<<count_if(a,a+6,big_0);
return 0;
}
如果使用count():
#include<iostream>
#include<algorithm>
using namespace std;
//bool big_0(int a){
// if(a==3)
// return true;
// return false;
//}
int main(){
int a[]={2,1,3,5,4,6,7};
//cout<<count_if(a,a+6,big_0);
cout<<count(a,a+6,3);
return 0;
}
- STL中的谓词
- STL算法设计理念 - 二元函数,二元谓词以及在set中的应用
- Objective-c中的谓词
- C++中的谓词函数
- OC中的谓词
- SQL中的谓词
- STL算法设计理念 - 谓词,一元谓词demo
- C++STL之函数对象及谓词
- C++STL之函数对象及谓词
- C++STL之函数对象及谓词
- C++STL之函数对象及谓词
- 36STL之函数对象和谓词
- STL之函数对象和谓词
- STL之函数对象和谓词
- Prolog中的表处理谓词
- 谓词
- 谓词
- 谓词
- Core Data 简单查询、
- 【Codeforces Beta Round 2C】【计算几何 转化 模拟退火】Commentator problem 求一个点,使得该点到三个圆的视角范围尽可能接近
- iOS 保持界面流畅的技巧
- eclipse8.0项目自动部署到tomcat
- idhttp的socket error # 10054 错误的处理办法
- STL中的谓词
- ecshop 后台增加上传图片项
- QT自定义控件
- 开涛老师的博客汇总 -- Web MVC 开发学习
- Java获取中文拼音、中文首字母缩写和中文首字母
- Failed to merge incompatible data types StringType and BinaryType
- linux-fdisk(转载)
- Core Data 异步查询(iOS 8 特性)
- 虚拟现实在工业仿真中的应用