仿函数:实质就是重载了小括号(),通过类,定义一个对象,对象可以被实例化,具有内存可以存储数据,把需要比较的数据事先给到类对象的成员,这样在比较两个值的时候,可以只传入需要被比较的值即可。因为比较的值有一个已经在类实例化对象时,就已经初始化给到类对象的成员,后期只需要传入需要被比较的那个值。

如:使用count_if()函数,取出比某个设定值大的数或小的数的个数

count_if():需要三个参数,前两个为指针,即待比较值的地址区间,第三个为选取比较的方式,将##一个值##传入第三个方式中。这个函数只能传入一个值,若不采用仿函数形式,在比较时不方便,需要在函数中手动设定待比较的值

如下,每次比较都需要手动设置7或者其他数字

bool LessThan7Function(const string& str) {
return str.length() < 7;
}

采用仿函数,则在初始化对象的时候,将比较值先传给对象的成员,这样后期就无需再设定,只要将待比较的值和对象的成员进行比较即可

#include "stdafx.h"
#include<vector>
#include<iostream>
#include<algorithm>
using namespace std; class great
{
public:
bool operator()(const string&str)
{
return str.length() > length;
}
great(int ss) :length(ss){}
private:
int length;
};
int _tmain(int argc, _TCHAR* argv[])
{
vector<string>s{"apple","aaaaaa","123"};
int t = 0;
vector<string>::iterator first = s.begin();
vector<string>::iterator last = s.end();
t = count_if(first, last, great(2)); //将比较的值2先传给对象成员length
cout << t << endl;
return 0;
}

这篇博客来龙去脉讲的比较详细:https://blog.csdn.net/codedoctor/article/details/79654690

最新文章

  1. MAC Osx PHP安装指导
  2. scikit-learn 线性回归算法库小结
  3. C++ Windows 下 根据进程名获取进程ID 以及该进程下所有窗口的句柄
  4. MS CRM 2013 Plugin 注册工具登录后空白
  5. Java里面获取当前服务器的IP地址
  6. Nutch2.x
  7. Sublime Text快捷键和常用插件推荐
  8. C++11中对类(class)新增的特性
  9. grunt压缩合并代码
  10. magento
  11. MongoDB的查询
  12. 提前防止Non-PIE错误,检测app是否包含PIE标志
  13. ueditor表格边框没有颜色的解决
  14. 064 SparkStream与kafka的集成,主要是编程
  15. 基于【CentOS-7+ Ambari 2.7.0 + HDP 3.0】搭建HAWQ数据仓库——安装配置OPEN-SSH,设置主机节点之间免密互访
  16. docker的ubuntu镜像无ifconfig和ping netstat命令
  17. redis5.0主从配置
  18. C#,ArcGIS Engine开发入门教程
  19. 【RAC】使用一条“ps”命令获取Linux环境下全部RAC集群进程信息
  20. 2018.10.20 bzoj1925: [Sdoi2010]地精部落(dp)

热门文章

  1. mysql悲观锁
  2. Day 10 函数的形参,实参
  3. 阅读 Device Driver Programmer Guide 笔记
  4. sql server 2016 附加 其它目录的数据库
  5. makefile或shell中的一些变量
  6. 廖雪峰Java7处理日期和时间-3java.time的API-1LocalDateTime
  7. nodejs 函数 :html2js
  8. centos7安装elasticsearch6.3.x集群并破解安装x-pack
  9. Dubbo源码阅读顺序
  10. leetcode101