bi-bind 正在参加 2020 年度 OSC 中国开源项目评选,请投票支持!
bi-bind 在 2020 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
投票让它出道
已投票
bi-bind 获得 2020 年度 OSC 中国开源项目评选「最佳人气项目」 !
bi-bind 获得 2020 年度 OSC 中国开源项目评选「最佳人气项目」「最积极运营项目」 !
bi-bind 获得 2020 年度 OSC 中国开源项目评选「最积极运营项目」 !

软件简介

boost中有一个bind库, 可以说是一个最为实用的tools了, 但是它与boost结合的有些紧密,而且其中的一些功能并不是很常用,就算将它bcp出独立的库也是一个不小的负担。如果在你的项目中不打算有boost库的痕迹但是又想使用bind的强大功能,那就来看看它吧。

一个一个超小型的bind库, 它实现了大部分boost::bind的功能, 只是将名字空间由boost 变换为 bi 。如果使用了一般的使用中通常可以将

boost::bind(my_fun(), _1,_2)(234, "hello world"); 形式替换为 bi::bind(my_fun(), _1, _2)(234, "hello world"),

既可完成编译,如果使用了名字空间,那就只需要将 using namespace boost 替换为 using namespafce bi 即可完成转化。

它对一般函数、成员函数, 虚拟函数, 函数对象都提供了全面支持。

但是....

bi::bind没有打算支持boost库, 如果在你的项目中使用了其它的boost‘tools,那你就不需要它了(或许也可以拿来研究研究),既然使用了boost,就不在乎在使用boost::bind了,所以boost::bind中涉及到与其它boost库的有交集的功能bi::bind库都没有支持。

它自然支持 boost::shared_ptr, 同时对c++10 保标准的shared_ptr也有很好的支持。

bi::bind借鉴了boost::bind的一些思想,有些代码甚至是直接从bind.hpp中复制过来的,但它在牺牲一些扩展性和多平台支持性的后果下, 同样的代码比boost::bind中有40%的效率提升 。

bi-bind 同时提供了 callback功能, 它就像是一个简化版本的 boost::function, 对一次调用行为做了抽象。

例如:

int fun1(int p2)
{
   std::cout << "call fun1" << std::endl;
   return p2 *  p2;
}

struct fun2
{
   fun2(int p1)
   {
      p_ = p1;
   }

   int operator()(int p2) const
   {
      return p2 * p_;
   }

   int p_;
};

//绑定一般函数 构造 callback
bi::callback cb = bi::bind(&fun1, _1);
int r = cb(2);   //r=4,使用了实际参数2

//绑定仿函数对象赋值给callback
cb = bi::bind(fun2(2), 9);
r = cb(100);     //r=18,使用了绑定参数9
bind 通常都接收它们的参数的拷贝, 并会在bind_t对像中保存一份相同的对象,而有些对像不具备拷贝语义或是拷贝的代价很大。 为了解决这个问题对,bind对像的可以使用ref 方式将这个对像封装起来使用。它定义了类模板 reference_wrapper和 两个返回实例的函数 ref 和 cref。

reference_wrapper 的目的是容纳一个引向类型为 T 的对象的引用。它主要用于把引用传给bind_t对像, bint_t对像中有对此的重载,即可以解开引用,调用实际的对像。

struct fun2
{
   fun2(int p1)
   {
      p_ = p1;
   }

   int operator()(int p2) const
   {
      return p2 * p_;
   }

   int p_;
};

//假设fun2的拷贝复制的负担很大
fun2 f(23);

//使用bi::ref解除对f对像的值语义调用
bi::bind(bi::ref(f), 9)(2);

展开阅读全文

评论 (0)

加载中
更多评论
暂无内容
发表了博客
2013/05/08 23:41

新的bind库 (bi-bind), 对boost::bind的精简

boost中有一个bind库, 可以说是一个最为实用的tools了, 但是它与boost结合的有些紧密,而且其中的一些功能并不是很常用,就算将它bcp出独立的库也是一个不小的负担。如果在你的项目中不打算有boost库的痕迹但是又想使用bind的强大功能,那就来看看它吧。 一个一个超小型的bind库, 它实现了大部分boost::bind的功能, 只是将名字空间由boost 变换为 bi 。如果使用了一般的使用中通常可以将 boost::bind(my_fun(), _1,_2)(234...

1
3
发表了博客
2019/09/28 00:04

用call或bind实现bind()

一、bind方法 让我们看一下MDN上对bind方法的解释     bind()方法创建一个新的函数,在bind()被调用时,这个新函数的this被bind的第一个参数指定,其余的参数将作为新函数的参数供调用时使用。 也就是说,bind()方法会: 创建一个新的函数(这也是它和call、apply不同的点) 创建的函数接收bind的第二个及以后的参数作为自己的参数 那bind创建的这个新函数还有其他什么特性吗?     调用绑定函数时作为this参数传递给...

0
0
发表了博客
2012/02/14 11:10

bind

$(function(){ $('input[name=q]').bind( mousedown:function(){ $(this).val(''); }, mouseout:function(){ $('txt').parent().parent().removeClass('wt').addClass('wc'); }, click:function(){ } ); })

0
0
发表了博客
2011/10/31 16:47

关于商业智能(BI)产品导购、BI选型、BI导航、BI产品对比

目前,越来越多的企业已经意识到BI的重要性和迫切性,领导也越来越注重自身信息化的发展,呈现出对BI系统旺盛的需求态势。很多企业都已经布置了考察BI市场的任务,希望通过对比,找到最适合本企业、性价比最高的BI软件。 但调查报告、评估报告一般难以客观。为什么这样说呢? 企业负责产品选型的人一般都不太了解BI这个行业,不清楚哪些是BI核心的技术,哪些是重要的参考指标,实施方法又是怎样的。所以通常会花很多时间、精力去...

0
5
发表于硬件 & IoT专区
2014/12/23 15:34

BI软件与BI开源软件

BI是Business Intelligence的缩写,中文翻译为商务智能,又称商业智能。 商业智能通常被理解为将企业中现有的数据转化为知识,帮助企业做出明智的业务经营决策的工具。这里所谈的数据包括来自企业业务系统的订单、库存、交易账目、客户和供应商等来自企业所处行业和竞争对手的数据以及来自企业所处的其他外部环境中的各种数据。而商业智能能够辅助的业务经营决策,既可以是操作层的,也可以是战术层和战略层的决策。为了将数据转...

0
3
发表了博客
2019/03/01 08:16

BI工具选型-如何从BI采购变成BI自主研发

随着信息化的发展,越来越多的企业将商业智能BI的部署列入了企业信息化建设的下期目标,BI市场需求的日益旺盛,也催生了BI厂商激烈的市场竞争,带动了国内BI工具技术的发展及成熟。 那么作为一个正在或者即将要进行BI工具选型的企业,面对百花齐放的BI市场,面对BI厂商的各执一词,应该如何选择适合自己企业的BI工具呢?具体有哪些可以衡量BI工具或者BI厂商好不好的指标呢?每个BI工具各有特色,有的易用性更强,有的性能更好,...

0
0
发表了博客
2010/06/24 13:12

bind

acl:定义IP地址表的名字,用于访问控制等 语法: acl acl-name {     address_match_list; } controls:宣告一个用于rndc工具控制通道 语法: controls { [ inet ( ip_addr | * ) [ port ip_port ] allow { address_match_list } keys { key_list }; ] [ inet ...; ] [ unix path perm number owner number group number keys { key_list }; ] [ unix ...; ] }; include:包含一个文件...

0
1
2020/02/21 16:10

Quick BI和Power BI实测比对

摘要: Quick BI和Power BI分别是阿里云和微软云上的官方BI产品,两款产品都是比较好的自助式商业智能软件,都具备云BI的优势,既能够像SaaS运行在阿里云或者Azure云上,又能快速部署到本地的服务器中运行。但是,两款产品还是有非常大的区别的;比如Power BI微软主打的是组合策略,需要Power BI Desktop、Power Query、Excel等多个产品的各自使用;Quick BI崇尚“高效数据分析与展现”,是基于网页版能实现数据建模、可视化报表...

0
0
发表于大前端专区
2014/03/27 17:07

bi

0
0
发表了博客
2020/03/19 20:25

Quick BI和Power BI实测比对

https://juejin.im/post/5e4f8ed9f265da576c24c521 摘要: Quick BI和Power BI分别是阿里云和微软云上的官方BI产品,两款产品都是比较好的自助式商业智能软件,都具备云BI的优势,既能够像SaaS运行在阿里云或者Azure云上,又能快速部署到本地的服务器中运行。但是,两款产品还是有非常大的区别的;比如Power BI微软主打的是组合策略,需要Power BI Desktop、Power Query、Excel等多个产品的各自使用;Quick BI崇尚“高效数据分析...

0
0
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
暂无内容
0 评论
5 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部