C++中std::function常见用法
C++标准库中的std::function是一个通用的函数封装,可以用来存储、复制、调用任何可调用对象(函数、函数指针、成员函数指针、lambda表达式等)。以下是std::function的一些常见用法:
定义std::function类型
std::function类型的定义类似于函数指针类型,例如:
std::function<int(int)> func;
表示一个参数为int类型,返回值为int类型的可调用对象。
绑定函数或函数对象
可以将函数或函数对象绑定到std::function对象上,例如:
int add(int a, int b) {
return a + b;
}
struct Add {
int operator()(int a, int b) {
return a + b;
}
};
std::function<int(int, int)> f1 = add;
std::function<int(int, int)> f2 = Add();
调用std::function对象
可以像调用函数一样调用std::function对象,例如:
int result1 = f1(1, 2);
int result2 = f2(3, 4);
检查std::function对象是否为空
可以使用std::function对象的bool()运算符来检查它是否为空,例如:
std::function<int(int, int)> f;
if (f) {
int result = f(1, 2);
}
使用std::bind绑定成员函数或对象的成员函数
std::bind可以将成员函数或对象的成员函数绑定到std::function对象上,例如:
class Calculator {
public:
int add(int a, int b) {
return a + b;
}
};
Calculator calc;
std::function<int(int, int)> f = std::bind(&Calculator::add, &calc, std::placeholders::_1, std::placeholders::_2);
int result = f(1, 2);
以上是std::function的一些常见用法,还有其他更高级的用法,需要根据具体情况使用。
C++中std::function常见用法的更多相关文章
- Guava中Predicate的常见用法
Guava中Predicate的常见用法 1. Predicate基本用法 guava提供了许多利用Functions和Predicates来操作Collections的工具,一般在 Iterabl ...
- JAVA中enum的常见用法
JAVA中enum的常见用法包括:定义并添加方法.switch.遍历.EnumSet.EnumMap 1.定义enum并添加或覆盖方法 public Interface Behaviour{ void ...
- C++ 中std::function 、std::bind的使用和lambda的使用
std::function是可调用对象的包装器:std::bind是将可点用对象和其参数一起进行绑定,且绑定后的结果可以使用std::function对象进行保存,并延迟调用到需要调用的时候: 在C+ ...
- C++11新特性之二——std::bind std::function 高级用法
/* * File: main.cpp * Author: Vicky.H * Email: eclipser@163.com */ #include <iostream> #includ ...
- C++11中std::function的使用
class template std::function is a general-purpose polymorphic function wrapper. Instances of std::fu ...
- (转)轻松掌握shell编程中数组的常见用法及示例
缘起:在老男孩进行linux培训shell编程教学中,发现不少水平不错的网友及同学对数组仍然很迷糊,下面就给大家分享下数组的用法小例子,希望能给大家一点帮助.其实SHELL的数组很简单,好用.我们学习 ...
- Java中枚举的常见用法
在JDK1.5以后引入了一种新的类型,就是枚举(enum).enum是用来声明枚举类型数据,它可以像数组一样存储许多的元素,但是不同于数组的是,它除了数字不能存储以外, 其他类型的如字母.特殊符号.汉 ...
- 转:VC中MessageBox的常见用法
一.关于MessageBox 消息框是个很常用的控件,属性比较多,本文列出了它的一些常用方法,及指出了它的一些应用场合. 1.MessageBox("这是一个最简单的 ...
- VC中MessageBox的常见用法
一.关于MessageBox 消息框是个很常用的控件,属性比较多,本文列出了它的一些常用方法,及指出了它的一些应用场合. 1.MessageBox("这是一个最简单的 ...
- VC++中MessageBox的常见用法详解
消息框是个很常用的控件,属性比较多,本文列出了它的一些常用方法,及指出了它的一些应用场合. 1.MessageBox("这是一个最简单的消息框!"); ...
随机推荐
- MySQL Unknown error 1267
1.问题说明 最近在mysql中运行一段SQL直接报错: 有一点要说一下,这个navicat给出的报错太简短只有错误码,还得自己去查有点垃圾,不知道新版如何? 2.问题原因 这里可以看到问题出在t2. ...
- Oracle 10gR2新SQL提示——opt_param
[English] 搜索Internet 搜索 HelloDBABA 首页 English 中文 技术文档 文章 案例 产品及下载 产品 >> FyDB OraTracer FySafe ...
- Go微服务框架go-kratos实战学习07:consul 作为服务注册和发现中心
一.Consul 简介 consul 是什么 HashiCorp Consul 是一种服务网络解决方案,它能够管理服务之间以及跨本地和多云环境和运行时的安全网络连接.Consul 它能提供服务发现.服 ...
- locals()用法
views.py代码 def test(request): if request.method == 'GET': return render(request,'test.html') elif re ...
- zookeeper运行时dos窗口一闪而过
错误:从官网下载zookeeper解压到本地之后,鼠标双击运行zkServer.cmd文件,dos窗口一闪而过,看不到错误原因: 解决方法:通过dos窗口执行zkServer.cmd文件,对应的错误信 ...
- 【Azure 事件中心】开启 Apache Flink 制造者 Producer 示例代码中的日志输出 (连接 Azure Event Hub Kafka 终结点)
问题描述 Azure Event Hub 在标准版以上就默认启用的Kafka终结点,所以可以通过Apache Kafka协议连接到Event Hub进行消息的生产和消费.通过示例代码下载到本地运行后, ...
- [C++逆向] 7 变量在内存中的位置和访问方式
目录 全局变量和局部变量的区别 局部静态变量 有意思的 堆变量 变量类型 作用域 可访问 全局变量 进程作用域 整个进程可访问 静态变量 文件作用域 当前代码文件可访问 局部变量 函数作用域 函数内可 ...
- VMware workstation虚拟机联网的方法
注意:我的虚拟机所安装的系统是Centos 方法一: 第一步:先设置VMware的编辑--虚拟网络编辑器,启用VMnet8,NAT模式,如下图所示. 其实就是VMware默认的设置,无须更改,如果不小 ...
- 音标 重音 u 用 中文 吁 去记忆 骑马让马停下来的 吁 - 英语
音标 重音 u 用 中文 吁 去记忆 骑马让马停下来的 吁
- baidu 突然打不开了 20210621
换了个dns 123.125.81.6 114.114.114.114