3.Boost之function
来源:互联网 发布:游戏鼠标 知乎 编辑:程序博客网 时间:2024/06/06 02:45
1第一个function案例
#include<iostream>
#include<boost/function.hpp>
usingnamespacestd;
usingnamespaceboost;
intmain(intargc,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>
usingnamespacestd;
usingnamespaceboost;
intmain(intargc,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>
usingnamespacestd;
usingnamespaceboost;
//通过下面的类管理worker类
classmanager
{
public:
voidallstart()
{
for (inti = 0;i < 10;i++)
{
//判断是否为空
if (workid)
{
//这时候直接调用i
workid(i);
}
}
}
//绑定调用,类似劫持,回调
voidsetcallback(boost::function<void(int)>newid)
{
workid =newid;
}
public:
//通过下面的指针绑定void run(int toid)这个函数
boost::function<void(int)>workid;
};
classworker
{
public:
voidrun(inttoid)
{
id =toid;
cout <<id <<"工作" << endl;
}
public:
intid;
};
intmain(intargc,char *argv[])
{
managerm;
workerw;
//类的成员函数需要对象来调用,绑定一个默认的对象
//在调用之前要进行一个绑定,绑定到对象之上
m.setcallback(boost::bind(&worker::run, &w,_1));
m.allstart();
cin.get();
return 0;
}
运行结果:
- 3.Boost之function
- boost学习之function
- Boost之function
- boost学习之-function
- boost之function object
- boost库之function
- boost之function使用
- Boost库之function
- boost之function的简单使用
- boost之function的简单使用
- Boost库之function的使用
- Boost库之function的使用
- Boost库之function的使用
- C++学习 boost学习之-function
- boost::function
- Boost.Function
- boost::function
- boost:function
- 黑马程序员 条件运算符、判断结构和函数
- Spark 1.0 开发环境构建:maven/sbt/idea
- Java编程思想(十) —— 通过异常处理错误(上)
- 杭电ACM 2017 字符串统计
- iOS开发的ui小空间集合
- 3.Boost之function
- 9 详解Multipart和BodyPart
- JAVA学习第四课(数组)
- 项目日志(5)关于进度总结及展望
- 安卓Activity的自定义标题的问题
- 4.Boost之ref
- 5.Boost之“资源申请即初始化” RAII
- 6.Boost之smartpointer
- uva 1585 - Score