Count_if算法,类似find_if,此函数接受一对迭代器,表示一个输入范围,还接受一个谓词,会对输入范围中的每个元素执行。Count_if返回一个计数值,表示谓词有多少次为真。
    使用bind函数必须包含头文件functional且必须包含命名空间placeholders,该命名空间也包含于functional头文件中,所以使用此命名空间也必须包含此头文件, 如:

using namespace (std::)placeholders;
或 using (std::)placeholders::_1; //名字_n都包含于命名空间placeholders
vector<string>::iterator iter = find_if(words.begin(), words.end(),
bind(check_size, _1, sz));

bind的参数个数:

bind是可变参数的,他接受的第一个参数是一个可调用对象,级实际工作函数A,返回供算法使用的新的可调用对象B。若A接受x个参数,则bind的参数个数应该是x+1,即除了A外,其他参数应一一对应A所接受的参数。这些参数中有一部分来自B(_n),另外一些来自于所处函数的局部变量。
下面是一个使用bind的例子

#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <functional> using namespace std;
using namespace placeholders;
ostream &print(ostream &os, const string &s, char c);
//using placeholders::_1; inline void output(vector<string> &words)
{
for_each(words.begin(), words.end(), bind(print, ref(cout), _1, ' '));
cout << endl;
}
inline bool isShort(const string &a, const string &b)
{
return a.size() < b.size();
} ostream &print(ostream &os, const string &s, char c)
{
return os << s << c;
}
inline bool check_size(const string &s, string::size_type sz)
{
return s.size() >= sz;
}
void biggies(vector<string> &words, vector<string>::size_type sz)
{
sort(words.begin(), words.end());
output(words); auto it = unique(words.begin(), words.end());
output(words); words.erase(it, words.end());
output(words); stable_sort(words.begin(), words.end(),
bind(isShort, _1, _2));
output(words); vector<string>::iterator iter = stable_partition(words.begin(), words.end(),
bind(check_size, _1, sz));
output(words); int count = iter - words.begin();
cout << "There is " << count << (count > 1 ? " words" : " word")
<< " is 5 or longer." << endl; for_each(words.begin(), iter, [](const string &s) { cout << s << " "; });
cout << endl;
}
int main()
{
vector<string> words{ "the", "quick", "red", "fox", "jumps",
"over", "the", "slow", "red", "turtle" };
biggies(words, 5);
return 0;
}

10.3.4参数绑定 bind的更多相关文章

  1. thinkphp 参数绑定

    参数绑定是指绑定一个参数到预处理的SQL语句中的对应命名占位符或问号占位符指定的变量,并且可以提高SQL处理的效率,需要数据库驱动类的支持,目前只有PDO和Sqlsrv驱动支持参数绑定功能. 富瑞华大 ...

  2. JAVAEE——SpringMVC第一天:介绍、入门程序、架构讲解、SpringMVC整合MyBatis、参数绑定、SpringMVC和Struts2的区别

    1. 学习计划   第一天 1.SpringMVC介绍 2.入门程序 3.SpringMVC架构讲解 a) 框架结构 b) 组件说明 4.SpringMVC整合MyBatis 5.参数绑定 a) Sp ...

  3. SpringMVC介绍及参数绑定

    本节内容: SpringMVC介绍 入门程序 SpringMVC架构 SpringMVC整合MyBatis 参数绑定 SpringMVC和Struts2的区别 一.SpringMVC介绍 1. 什么是 ...

  4. springMVC第一天——入门、整合与参数绑定

    大纲摘要: 1.Springmvc介绍 2.入门程序 3.Springmvc架构讲解 a) 框架结构 b) 组件说明 4.Springmvc整合mybatis 5.参数绑定 乱码问题解决 a) Spr ...

  5. SpringMVC的参数绑定

    一.@RequestMapping注解说明   通过@RequestMapping注解可以定义不同的处理器映射规则. URL路径映射 @RequestMapping(value="/item ...

  6. Python中函数参数类型和参数绑定

    参数类型 Python函数的参数类型一共有五种,分别是: POSITIONAL_OR_KEYWORD(位置参数或关键字参数) VAR_POSITIONAL(可变参数) KEYWORD_ONLY(关键字 ...

  7. SpringMVC入门 -- 参数绑定

    一.REST与RESTful 1.简介 (1)REST(Representational State Transfer):表现层状态转移,一种软件架构风格,不是标准.REST描述的是在网络中clien ...

  8. 【工作篇】再次熟悉 SpringMVC 参数绑定

    前言 主要现在项目中使用的参数绑定五花八门的,搞得很头大,例如有些用字符串接收日期,用字符串接受数组等等,完全没有利用好 SpringMVC 的优势,这里自己也总结一下,免得到时又要百度谷歌查找. 以 ...

  9. Spring MVC初始化参数绑定

    初始化参数绑定与类型转换很类似,初始化绑定时,主要是参数类型 ---单日期 在处理器类中配置绑定方法  使用@InitBinder注解 在这里首先注册一个用户编辑器 参数一为目标类型   proper ...

随机推荐

  1. 吴裕雄--天生自然 R语言数据可视化绘图(4)

    par(ask=TRUE) # Basic scatterplot library(ggplot2) ggplot(data=mtcars, aes(x=wt, y=mpg)) + geom_poin ...

  2. Python 编程入门(4):变量与赋值

    以下所有例子都基于最新版本的 Python,为了便于消化,每一篇都尽量短小精悍,希望你能尽力去掌握 Python 编程的「概念」,可以的话去动手试一下这些例子(就算目前还没完全搞懂),加深理解. 经过 ...

  3. C# monitor keyboard and print pressed key

    using System; using System.Windows.Forms; using System.Runtime.InteropServices; using System.Diagnos ...

  4. 第二章.学习halcon的准备工作

    *图片读取 read_image (Test1, 'C:/Users/Administrator/Desktop/new/Test1.jpg') *文件夹读取 list_files ('C:/User ...

  5. equals和==的使用

    1.equals的使用: 引用数据类型的比较:通常情况下比较的是引用数据类型下的栈中的地址,但当你重写了equals方法后就不一定了 User user1=new User("tom&quo ...

  6. 以下几种情况转换成布尔类型会得到false

    0 -0 '' NaN undefined null false document.all()

  7. CSRF 攻击的应对之道 转载

    CSRF 背景与介绍 CSRF(Cross Site Request Forgery, 跨站域请求伪造)是一种网络的攻击方式,它在 2007 年曾被列为互联网 20 大安全隐患之一.其他安全隐患,比如 ...

  8. PHP0004:PHP基础3

    php写在 标签里

  9. CSS3之border-image的使用

    最近,我在项目开发中遇到这样的问题. 要给这个tab的底部的蓝线左右加上圆角. 然而,这个元素实际如上图所示,只是active的时候加了个underline的类,蓝线并没有单独的html. 若给这个s ...

  10. 复习babel

    对babel进行复习