首先,让我们来看看百度百科上"断言函数"定义说明:
1定义fr=aladdin#" class="nslog:1019" title="编辑本段" style="text-decoration:none; color:rgb(136,136,136); height:15px; line-height:16px; padding-left:18px; font-size:12px; font-family:宋体; display:block">编辑
一个推断式,一个返回bool值的函数或者仿函数。几元就是函数有几个參数,至于定义和使用。函数定义和一般的函数定义一样。仿函数就是写个类,然后重载operator()。
使用就是在那些以这样的须要返回bool值的函数作參数的函数里用了。
一元谓词函数举比例如以下
1,推断给出的string对象的长度是否小于6
bool GT6(const string &s)
{
return s.size() >= 6;
}
2,推断给出的int是否在3到8之间
bool Compare( int i )
{
return ( i >= 3 && i <= 8 );
}
{
return ( i >= 3 && i <= 8 );
}
二元谓词举比例如以下
1,比較两个string对象,返回一个bool值。指出第一个string是否比第二个短
bool isShorter(const string &s1, const string &s2)
{
return s1.size() < s2.size();
}
谓词函数主要用于STL算法.比如以下的一个样例
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
bool isZero(int num){
return num==0;
}
int main(){
vector<int> v1={10,11,12,13};
vector<int> v2({7,8,9,15,0});
auto b1=find_if(v1.begin(),v1.end(),isZero);
if(b1!=v1.end()){
cout<<"v1存在元素0!"<<endl;
}else{
cout<<"v1不存在元素0!"<<endl;
}
auto b2=find_if(v2.begin(),v2.end(),isZero);
if(b2!=v1.end()){
cout<<"v2存在元素0!"<<endl;
}else{
cout<<"v2不存在元素0!"<<endl;
} }
find_if()接受一个谓词函数回调作为參数.
find_if()算法对范围内每一个元素调用谓词,直到这个谓词返回true;
假设返回true,find_if()它返回一个参考的元素迭代器.否则,它在尾部返回迭代.
版权声明:本文博客原创文章。博客,未经同意,不得转载。