博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
c++11: bind用法
阅读量:6812 次
发布时间:2019-06-26

本文共 1507 字,大约阅读时间需要 5 分钟。

原型:

templateclass R, class F, class... Args 

bind( F&& f, Args&&... args );

bind函数模板的作用是:

The function template bind generates a forwarding call wrapper for f. Calling this wrapper is equivalent to invoking with some of its arguments bound to args.

不怎么好翻译,尝试解释一下:我们为某个函数做一个bind,然后调用该bind和调用函数是一样的,跟函数指针有点像。

#include 
#include
#include
#include
void f(int n1, int n2, int n3, const int& n4, int n5){ std::cout << n1 << ' ' << n2 << ' ' << n3 << ' ' << n4 << ' ' << n5 << '\n';} int g(int n1){ return n1;} struct Foo { void print_sum(int n1, int n2) { std::cout << n1+n2 << '\n'; } int data = 10;}; int main(){ using namespace std::placeholders; // for _1, _2, _3... // demonstrates argument reordering and pass-by-reference int n = 7; // (_1 and _2 are from std::placeholders, and represent future // arguments that will be passed to f1) auto f1 = std::bind(f, _2, _1, 42, std::cref(n), n); n = 10; f1(1, 2, 1001); // 1 is bound by _1, 2 is bound by _2, 1001 is unused // nested bind subexpressions share the placeholders auto f2 = std::bind(f, _3, std::bind(g, _3), _3, 4, 5); f2(10, 11, 12); // bind to a member function Foo foo; auto f3 = std::bind(&Foo::print_sum, &foo, 95, _1); f3(5); // bind to member data auto f4 = std::bind(&Foo::data, _1); std::cout << f4(foo) << '\n';

 

转载于:https://www.cnblogs.com/457220157-FTD/p/4019034.html

你可能感兴趣的文章
轻松上云系列之二:其他云数据迁移至阿里云
查看>>
sql server 高可用性技术总结
查看>>
Robot Framework之分层测试流程
查看>>
学习ASP.NET Core Razor 编程系列七——修改列表页面
查看>>
PostgreSQL 10.1 手册_部分 III. 服务器管理_第 23 章 本地化_23.3. 字符集支持
查看>>
读Kafka Consumer源码
查看>>
Android Robolectric使用
查看>>
WPF中的多进程(Threading)处理实例(二)
查看>>
redis 系列7 数据结构之跳跃表
查看>>
Jmeter二次开发环境搭建
查看>>
Mysql 用中间件atlas进行读写分离(学习笔记十四)
查看>>
想要保护自主品牌知识产权需要了解商标注册的一些技巧
查看>>
获取图片的长和宽
查看>>
Java基础算法详解
查看>>
OpenCV3 自动白平衡:灰度世界和完美反射算法
查看>>
Gradle特殊用法
查看>>
[雪峰磁针石博客]2018最佳人工智能数据采集(爬虫)工具书下载
查看>>
手把手学IOT服务端API编程[3、查询产品]|MVP讲堂
查看>>
Java 8新特性
查看>>
查找依赖库的最新版本
查看>>