C++ 回调和memcpy 的小技巧

回调函数是可以避免臃肿的线程,实现功能的一种方法,

A:将收集满锯木屑的容器 托运走并清空容器
B:锯木 并且收集锯木屑

这个时候就可以回调
B: 1、定义 一个回收锯木屑函数  CallbackType

typedef boost::function<void (const bool &result)> CallbackType;

2、注册 回调函数 

void setCallback(const CallbackType & cbk);

A: 调用注册回调函数:

setCallback(boost::bind(&B::callback , this, _1));

B在锯木屑收集满了一次就通知A将锯木屑运走并清空容器,这样就可以实现回调

这里采用boost

boost::function 是对对象指针的对象化封装,是一个函数对象的容器

boost::bind 绑定成员函数,返回函数对象

如果你并不想使用函数成员对象作为回调函数,可以使静态函数或者全局函数作为回调函数。

memcpy :

函数原型 memcpy(void *dest ,const void *src, size_t n);

这里需要注意的是  
1、如果dest 和src 是同类型数组  那就算n 个相同类型的 数据

2、如果是不同类型的数据,主要看src 的类型,那就是n 个src 数据类型的数据

否则复制的时候个数会出现错误

如果不想用memcpy 可以用std::copy ,比较通用的是,这个是元素拷贝,不是内存深拷贝

可以将一个float 型数组复制给double数组

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值