3.Boost之function
1第一个function案例
#include<iostream>
#include <boost/function.hpp>
using namespace std;
using namespace boost;
int main(int argc,char *argv[])
{
//其中atoi:表示的是将字符串转换成为数字,即:char * to int
//int表示的是函数的返回值,char *表示函数的参数类型
boost::function<int(char *)> fun = atoi;
//下面的运行结果是25
cout << fun("12") + fun("13") << endl;
//指向strlen函数。可以直接=,是因为strlen的参数类型也是char *类型的
fun = strlen;
//说明不不加'\0',下面的运行结果是5
cout << fun("adfaa") << endl;
cin.get();
}
运行结果:
2.function结合bind,案例如下:
#include<iostream>
#include <boost/function.hpp>
#include <boost/bind.hpp>
using namespace std;
using namespace boost;
int main(int argc, char *argv[])
{
boost::function<int(char *)> fun = atoi;
//下面的_1是一个占位符,表示fun要传入的参数
fun = boost::bind(strcmp, "034", _1);
//如果上面的"034"改成"234",运行结果是1
//此种情况运行的结果是:-1
cout << fun("123") << endl;
//下面的运行结果是0
cout << fun("034") << endl;
cin.get();
}
运行结果是:
3.function案例3
#include<iostream>
#include <boost/function.hpp>
#include <boost/bind.hpp>
using namespace std;
using namespace boost;
//通过下面的类管理worker类
class manager
{
public:
void allstart()
{
for (int i = 0; i < 10; i++)
{
//判断是否为空
if (workid)
{
//这时候直接调用i
workid(i);
}
}
}
//绑定调用,类似劫持,回调
void setcallback(boost::function<void(int)> newid)
{
workid = newid;
}
public:
//通过下面的指针绑定void run(int toid)这个函数
boost::function<void(int)> workid;
};
class worker
{
public:
void run(int toid)
{
id = toid;
cout << id << "工作" << endl;
}
public:
int id;
};
int main(int argc, char *argv[])
{
manager m;
worker w;
//类的成员函数需要对象来调用,绑定一个默认的对象
//在调用之前要进行一个绑定,绑定到对象之上
m.setcallback(boost::bind(&worker::run, &w, _1));
m.allstart();
cin.get();
return 0;
}
运行结果:
3.Boost之function相关推荐
- boost::phoenix::function相关的测试程序
boost::phoenix::function相关的测试程序 实现功能 C++实现代码 实现功能 boost::phoenix::function相关的测试程序 C++实现代码 #include & ...
- boost::phoenix::function用法的测试程序
boost::phoenix::function用法的测试程序 实现功能 C++实现代码 实现功能 boost::phoenix::function用法的测试程序 C++实现代码 #include & ...
- Using Apache Solr‘s boost query function with Spring in Java
Using Apache Solr's boost query function with Spring in Java
- 传递function_boost库function与bind
boost库function与bind 一.function 头文件:boost/function.hpp function更合适的说法我觉得是一种回调函数的表现方式. boost::function ...
- boost::mp11::mp_similar相关用法的测试程序
boost::mp11::mp_similar相关用法的测试程序 实现功能 C++实现代码 实现功能 boost::mp11::mp_similar相关用法的测试程序 C++实现代码 #include ...
- boost::mp11::mp_plus相关用法的测试程序
boost::mp11::mp_plus相关用法的测试程序 实现功能 C++实现代码 实现功能 boost::mp11::mp_plus相关用法的测试程序 C++实现代码 #include <b ...
- boost::mp11::mp_or相关用法的测试程序
boost::mp11::mp_or相关用法的测试程序 实现功能 C++实现代码 实现功能 boost::mp11::mp_or相关用法的测试程序 C++实现代码 #include <boost ...
- boost::mp11::mp_and相关用法的测试程序
boost::mp11::mp_and相关用法的测试程序 实现功能 C++实现代码 实现功能 boost::mp11::mp_and相关用法的测试程序 C++实现代码 #include <boo ...
- Boost:使用行列式函数和transform()算法计算许多4x4矩阵的行列式
Boost:使用行列式函数和transform()算法计算许多4x4矩阵的行列式 实现功能 C++实现代码 实现功能 使用行列式函数和transform()算法计算许多4x4矩阵的行列式 C++实现代 ...
最新文章
- COM组件转换成.NET组件[转]
- android将被代替的控件,Android 控件被忽略的属性
- Spark集群基于Zookeeper的HA搭建部署笔记(转)
- Visio修改默认字体样式
- Python Django 多表插入之重写save()方法代码示例
- 基于mui框架读取nfc数据_基于NFC的数据采集软件系统的设计与实现
- 大数据WEB阶段(十五)JavaEE三大核心技术之过滤器
- HDOJ杭电2044
- Java为什么能跨平台运行
- mysql 大数据量插入遇到瓶颈 可行性方案探究
- go语言的安装、环境变量配置及简单使用
- 将图片的二进制字节字符串在HTML页面以图片形式输出
- 【深度优先搜索】网格类问题:牛客网:机器人的运动范围
- 软件 PRE、RC、beta、RTM、CTP等版本号的基本区别
- CSDN 勤学会 —— 和优秀的人一起学习进步
- 微信好友保存在服务器,微信好友数据备份好,封号也不怕!
- 数理知识(1):虚无假设、显著性检验、统计推断、P值法
- 视频服务器是什么?要如何搭建?
- IOS和安卓展示时间兼容问题
- 元宇宙系列之AI虚拟人:“人”潮汹涌 探路未来
热门文章
- 一文带你了解隐马尔科夫模型
- MATLAB机器学习系列-8 极限学习机(Extreme Learning Machine, ELM)原理及其代码实现
- 使用 std::shared_ptr 和 std::unique_ptr 测试 boost/pointer_cast.hpp
- boost::phoenix::ref相关的测试程序
- boost::mpl模块实现sizeof相关的测试程序
- boost::mp11::mp_partition_q相关用法的测试程序
- boost::hana::extract用法的测试程序
- boost::gil::threshold_adaptive用法的测试程序
- boost::contract模块实现虚拟可选结果的测试程序
- Boost:字符串的RLE压缩的测试程序