C++ Primer 5th笔记(10)chapter10 泛型算法 :bind
1. 定义
一个函数适配器,接受一个函数调用,增加或更改参数传递给另外一个函数调用。
比如 auto newCallable=bind(callable, arg_list);
newCallable本身是一个可调用对象,当我们调用newCallable函数时, newCallable会调用callable函数。
arg_list是callable的参数,是逗号分隔的多个参数列表,形如_n的名字,_1是newCallable的第一个参数, _2为第二个参数,依次类推。
- 标准库bind函数 functional.h
- _n参数在命名空间placeholders中,需要如下声明:
using namespace std::placeholders::_1;
eg.
using namespace std::placeholders;
bool check_size(const string &s, string::size_type sz)
{return s.size() >= sz;
}auto check6 = bind(check_size, _1, 6);
string s = "hello";
bool b1 = check6(s); <=> check_size(s, 6);
eg2.
auto g = bind(f, a, b, _2, c, _1);
g(_1, _2) => f(a, b, _2, c, _1);
g(X, Y) => f(a, b, Y, c, X);
2. bind参数不能拷贝
2.1 eg. 不能拷贝ostream
ostream &print(ostream &os,const string &s,char c)
{ return os<<s<<c;}for_each(word.begin(),word.end(),bind(print,os,_1, ''))//error
2.2 可以使用ref函数。
函数ref返回一个对象,包含给定引用,此对象是可以拷贝的。
- 标准库中还有一个cref函数,生成一个保存const引用的类。
- 与bind一样,函数ref和cref也定义在头文件functional中。
for_each(words.begin(), words.end(), bind(printf, ref(os), _1, ' '));
C++ Primer 5th笔记(10)chapter10 泛型算法 :bind相关推荐
- C++ Primer 学习笔记 第十章 泛型算法
C++ Primer 学习笔记 第十章 泛型算法 336 find函数 #include <iostream> #include <vector> #include <s ...
- C++ Primer 5th笔记(10)chapter10 泛型算法 :泛型算法结构
名称 定义 输入迭代器 只读,不写:单遍扫描,只能递增 输出迭代器 只写,不读:单遍扫描,只能递增 前向迭代器 可读写,多遍扫描,只能递增 双向迭代器 可读写,多遍扫描,可递增递减 随机访问迭代器 可 ...
- C++ Primer 5th笔记(10)chapter10 泛型算法 :迭代器
迭代器类别 名称 定义 插入迭代器 这些迭代器被绑定到一个容器上,可用来向容器插入元素 流迭代器 这些迭代器被绑定到输入或输出流上,可用来遍历所有关联的IO流 反向迭代器 这些迭代器向后而不是向前移动 ...
- C++primer第十章 泛型算法 10.4 再探迭代器 10.5 泛型算法结构
除了为每个容器定义的迭代器之外,标准库在头文件iterator中还定义了额外几种迭代器.这些迭代器包括以下几种. 插入迭代器(insert iterator):这些迭代器被绑定到一个容器上,可用来向容 ...
- C++ primer 第10章 泛型算法
文章目录 概述 find count 初识泛型算法 只读算法 只读算法accumulate 只读算法equal 写容器元素的算法 算法fill 算法fill_n back_inserter 算法cop ...
- C++ Primer 5th笔记(chap 14 重载运算和类型转换)函数调用运算符
1. 定义 如果类定义了调用运算符(重载了函数调用运算符),则该类的对象被称作函数对象(function object),可以像使用函数一样使用该类的对象, eg. struct absInt{int ...
- C++ Primer 5th笔记(10)chapter10 泛型算法 :write
1. fill: 对给定区间全部赋予某值(algorithm.h) 将指定范围内的每个元素都设定为给定的值.如果输入范围有效,则可以安全写入.这个算法只会对输入范围内已存在的元素进行写入操作. tem ...
- C++ Primer 5th笔记(10)chapter10 泛型算法 : read
标准库提供一组不依赖特定的容器类型的共性算法 指定迭代器范围, eg. [begin, end)这种左闭包 3种类型: 只读.写.sort 1. find 查询 template<class I ...
- C++ Primer 5th笔记(10)chapter10 泛型算法 :谓词
1. 定义 谓词(predicate)是一个可调用的表达式,返回结果是一个能用作条件的值. 用于一个对象或一个表达式,如果可以对其使用调用运算符,则称为可调用的: 可调用的对象有:函数.函数指针.重载 ...
最新文章
- perfmon 端口修改_Jmeter 5.3 服务器资源监控插件 PerfMon 使用介绍
- (转载)hadoop(13) 添加或删除datanode节点
- 那些喜欢诉苦的人,他们大概会一直苦下去
- JavaScript——易班优课YOOC课群在线测试答案隐藏解决方案
- LeetCode算法入门- Search Insert Position -day19
- 自动采集壁纸的微信小程序
- 小程序引入的echarts过大如何解决_智慧虎超:为服装行业带来3倍收益?小程序如何解决销售难题?...
- nasm纠正性训练指南pdf_PDF转word,一键转换?没有这么简单
- python新手难点_汇总初学python时的28个操作难点(新手必看篇)
- php接口防止app重复提交,AOP防止接口重复提交
- jsch 长连接_广濑连接器DF13
- Ubuntu Kvm USB重定向问题解决
- 模拟退火算法(Python)
- java 在线画布_使用canvas制作在线画板
- 美国电影超短200句(看英文原版电影很有用的!)(转)
- OpenGL递归细分四面体法绘制球体
- 深入理解JVM的内存结构及GC机制
- ctfshow (ssrf学习和实践)
- 消防设施操作员考试真题、模拟练习题库(7)
- 不宜猥琐惊世人 猥琐哥横空出世
热门文章
- 数据库_第一第二第三范式讲解(通俗易懂)
- one or more of the ports are invalid. Open the server editor and correct the invalid ports
- org.hibernate.NonUniqueObjectException 异常处理
- 计算机英语应用研究,计算机英语辅助学习系统的研究与应用-软件工程专业论文.docx...
- python的窗口处理模块_Python tkinter模块弹出窗口及传值回到主窗口操作详解
- 数据中心制冷基本原则及节能方案
- string替换_GEE数据类型—String,Number
- ios开发ocr识别_车牌识别技术
- TF之LSTM:利用LSTM算法对Boston(波士顿房价)数据集【13+1,506】进行回归预测(房价预测)
- ML之LoRSGD:基于LoR(逻辑回归)、SGD梯度下降算法对乳腺癌肿瘤(10+1)进行二分类预测(良/恶性)