首先,让我们来看看百度百科上"断言函数"定义说明:

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 ); 

  }

二元谓词举比例如以下

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()它返回一个参考的元素迭代器.否则,它在尾部返回迭代.

版权声明:本文博客原创文章。博客,未经同意,不得转载。

C++学习笔记32 断言函数的更多相关文章

  1. Linux学习笔记32——select()函数分析【转】

    Select在Socket编程中还是比较重要的,可是对于初学Socket的人来说都不太爱用Select写程序,他们只是习惯写诸如 connect.accept.recv或recvfrom这样的阻塞程序 ...

  2. OpenCV 学习笔记03 findContours函数

    opencv-python   4.0.1 1 函数释义 词义:发现轮廓! 从二进制图像中查找轮廓(Finds contours in a binary image):轮廓是形状分析和物体检测和识别的 ...

  3. IOS学习笔记07---C语言函数-printf函数

    IOS学习笔记07---C语言函数-printf函数 0 7.C语言5-printf函数 ------------------------- ----------------------------- ...

  4. IOS学习笔记06---C语言函数

    IOS学习笔记06---C语言函数 --------------------------------------------  qq交流群:创梦技术交流群:251572072              ...

  5. Typescript 学习笔记三:函数

    中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...

  6. ES6学习笔记<三> 生成器函数与yield

    为什么要把这个内容拿出来单独做一篇学习笔记? 生成器函数比较重要,相对不是很容易理解,单独做一篇笔记详细聊一聊生成器函数. 标题为什么是生成器函数与yield? 生成器函数类似其他服务器端语音中的接口 ...

  7. canvas学习笔记、小函数整理

    http://bbs.csdn.net/topics/391493648 canvas实例分享 2016-3-16 http://bbs.csdn.net/topics/390582151 html5 ...

  8. Go语言学习笔记七: 函数

    Go语言学习笔记七: 函数 Go语言有函数还有方法,神奇不.这有点像python了. 函数定义 func function_name( [parameter list] ) [return_types ...

  9. Effective STL 学习笔记 32 ~ 33

    Effective STL 学习笔记 32 ~ 33 */--> div.org-src-container { font-size: 85%; font-family: monospace; ...

随机推荐

  1. hdu4858 项目管理 bestcoder round1 B

    唔..弱弱的暴力水果 0操作时,将v加到u上,能够直接把v加到u相连的点上,这样输出时直接输出要求点的值. 布这种话反正我是超时了.. #include<cstdio> #include& ...

  2. xml它解析----DOM解析

    DOM模型(documentobject model) •DOM解析器在解析XML文档时,会把文档中的全部元素,依照其出现的层次关系.解析成一个个Node对象(节点). •在dom中.节点之间关系例如 ...

  3. (hdu step 6.3.5)Card Game Cheater(匹配的最大数:a与b打牌,问b赢a多少次)

    称号: Card Game Cheater Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Other ...

  4. HDU 1085-Holding Bin-Laden Captive!(生成功能)

    Holding Bin-Laden Captive! Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Ja ...

  5. Linking pronunciation in English

    1.constant+vowel stand up give up get up 2.vowel+vowel 2.1 i:/i/ei/ai/oi [j] stay up carry it 2.2 u: ...

  6. .NET应用架构设计—再次了解分层架构(现代企业应用分层架构核心设计元素)

    阅读文件夹: 1.背景介绍 2.简要回想下传统三层架构 3.企业级应用分层架构(现代分层架构的基本演变过程) 3.1.服务层中应用契约式设计来解决动态条件不匹配错误(通过契约式设计模式来将问题在线下暴 ...

  7. asp.net使用post方式action到另一个页面,在另一个页面接受form表单的值!(报错,已解决!)

    原文:asp.net使用post方式action到另一个页面,在另一个页面接受form表单的值!(报错,已解决!) 我想用post的方式把一个页面表单的值,传到另一个页面.当我点击Default.as ...

  8. 《Java并发编程实战》第二章 线程安全 札记

    一个.什么是线程安全 编写线程安全的代码 其核心是管理国事访问的操作. 共享,可变的状态的訪问 - 前者表示多个线程訪问, 后者声明周期内发生改变. 线程安全性 核心概念是正确性.某个类的行为与其规范 ...

  9. 【安德鲁斯】于java代码集drawableLeft给予适当的大小如何,当?

    textView.setCompoundDrawables(drawable, null, null, null);如果看不到图片,这是由于需要手动定drawable适当的大小,使用drawable. ...

  10. Spring.NET程序

    第一个Spring.NET程序   Spring.NET环境准备 pring.NET 1.3.2下载地址:http://down.51cto.com/data/861700 下载后解压 Spring. ...