1. 定义

谓词(predicate)是一个可调用的表达式,返回结果是一个能用作条件的值。

  • 用于一个对象或一个表达式,如果可以对其使用调用运算符,则称为可调用的;
  • 可调用的对象有:函数、函数指针、重载函数调用运算符的类和lambda表达式。

2. n元谓词

几元谓词接受几元参数。 谓词分为:一元谓词和二元谓词。

bool isShorter(const string &s1, const string &s2)
{return s1.size() < s2.size();
}

eg. 使用谓词的排序版本

vector<string> words = {"the", "quick", "red", "fox","red", "the","slow"};
cout << "Before: ";
for(auto iter = words.begin();iter != words.end(); ++iter){cout << *iter << "  ";
}
cout << endl;
sort(words.begin(),words.end(), isShorter); //使用谓词进行排序
cout << "After sort: ";
for(const auto &s: words){cout << s << "  ";
}
cout << endl;

输出结果为:

Before: the  quick  red  fox  red  the  slow
After sort: the  red  fox  red  the  slow  quick

3.应用举例.

标准库会为谓词算法重新起个名字以表示跟原来不一样。
eg

      find (beg, end, val);      // find first instance of val in the input rangefind_if (beg, end, pred);  // find first instance for which pred is truereverse (beg, end);reverse_copy (beg, end, dest);

C++ Primer 5th笔记(10)chapter10 泛型算法 :谓词相关推荐

  1. C++ Primer 学习笔记 第十章 泛型算法

    C++ Primer 学习笔记 第十章 泛型算法 336 find函数 #include <iostream> #include <vector> #include <s ...

  2. C++ Primer 5th笔记(10)chapter10 泛型算法 :泛型算法结构

    名称 定义 输入迭代器 只读,不写:单遍扫描,只能递增 输出迭代器 只写,不读:单遍扫描,只能递增 前向迭代器 可读写,多遍扫描,只能递增 双向迭代器 可读写,多遍扫描,可递增递减 随机访问迭代器 可 ...

  3. C++ Primer 5th笔记(10)chapter10 泛型算法 :迭代器

    迭代器类别 名称 定义 插入迭代器 这些迭代器被绑定到一个容器上,可用来向容器插入元素 流迭代器 这些迭代器被绑定到输入或输出流上,可用来遍历所有关联的IO流 反向迭代器 这些迭代器向后而不是向前移动 ...

  4. C++primer第十章 泛型算法 10.4 再探迭代器 10.5 泛型算法结构

    除了为每个容器定义的迭代器之外,标准库在头文件iterator中还定义了额外几种迭代器.这些迭代器包括以下几种. 插入迭代器(insert iterator):这些迭代器被绑定到一个容器上,可用来向容 ...

  5. C++ primer 第10章 泛型算法

    文章目录 概述 find count 初识泛型算法 只读算法 只读算法accumulate 只读算法equal 写容器元素的算法 算法fill 算法fill_n back_inserter 算法cop ...

  6. C++ Primer 5th笔记(chap 14 重载运算和类型转换)函数调用运算符

    1. 定义 如果类定义了调用运算符(重载了函数调用运算符),则该类的对象被称作函数对象(function object),可以像使用函数一样使用该类的对象, eg. struct absInt{int ...

  7. C++ Primer 5th笔记(10)chapter10 泛型算法 :write

    1. fill: 对给定区间全部赋予某值(algorithm.h) 将指定范围内的每个元素都设定为给定的值.如果输入范围有效,则可以安全写入.这个算法只会对输入范围内已存在的元素进行写入操作. tem ...

  8. C++ Primer 5th笔记(10)chapter10 泛型算法 : read

    标准库提供一组不依赖特定的容器类型的共性算法 指定迭代器范围, eg. [begin, end)这种左闭包 3种类型: 只读.写.sort 1. find 查询 template<class I ...

  9. C++ Primer 5th笔记(10)chapter10 泛型算法 :bind

    1. 定义 一个函数适配器,接受一个函数调用,增加或更改参数传递给另外一个函数调用. 比如 auto newCallable=bind(callable, arg_list); newCallable ...

最新文章

  1. VBS脚本和HTML DOM自动操作网页
  2. 内部类(闭包与回调)
  3. 亚马逊aws 服务器删除_AWS推出Apache Airflow全托管工作流MWAA
  4. HTML、CSS规范
  5. 使用async,await关键字进行API Access Token的获取
  6. Unity3D 访问Access数据库
  7. 从0到1写RT-Thread内核——临界段的保护
  8. 我写了10年博客,却被人说“不火”?我是这样怼回去的?
  9. Codeforces Round #409 (rated, Div. 2, based on VK Cup 2017 Round 2)C. Voltage Keepsake
  10. 使用Keras框架进行单变量时间序列预测——以上证指数为例
  11. Mysql中有哪些数据类型(建议收藏)
  12. ckdeitor的使用方法
  13. 卷积的定义,知乎上有个很有名的段子:
  14. Bolg-First
  15. AutoCAD文档01——安装教程
  16. 啥是甘特图?用思维导图制作甘特图的方法
  17. Qt 添加 QtNetwork 库文件(包括vs中和qt中)
  18. Nginx是什么,为什么使用Nginx
  19. 写字机器人开发之:python opencv linux下合作操作摄像头
  20. 常见的随机变量分布律/概率密度、期望、方差以及特征函数

热门文章

  1. mac mysql使用_在Mac中安装和使用MySQL
  2. php url传递参数_python+Requests接口自动化测试之传递 URL 参数
  3. css字体的字型,CSS的字体、字型控制_css
  4. 网络工程中的割接是什么意思?
  5. mysql严格模式 报错_代码一上传服务器就报错-尝试开启 MySQL 严格模式
  6. Python之 sklearn:sklearn.preprocessing中的StandardScaler函数的简介及使用方法之详细攻略
  7. Python之pyecharts:利用pyecharts(十五种风格)绘制2018年~2020年中国互联网Top巨头近三年市值(美元)柱状图
  8. DL之VGG16:基于VGG16(Keras)利用Knifey-Spoony数据集对网络架构FineTuning
  9. OS_CORE.C(8)
  10. freemarker写入word【未完,待续】