bind并不是一个单独的类或函数,而是非常庞大的家族,依据绑定的参数个数和要绑定的调用对象类型,总共有十个不同的形式,但它们的名字都叫bind.
bind接受的第一个参数必须是一个可调用对象f,包括函数,函数指针,函数对象和成员函数,之后bind接受最多9个参数,参数的数量必须与f的参数数量相等
_1,_2这些一直可以到9,是占位符,必须在绑定表达式中提供函数要求的所有参数,无论是真实参数还是占位符均可以。占位符不可以超过函数参数数量。
绑定普通函数:

.#include<boost/bind.hpp>
.#include<iostream>
.using namespace std;
.using namespace boost;
.
.void fun(int a,int b){
. cout << a+b << endl;
.}
.
.int main()
.{
. bind(fun,,)();//fun(1,2)
. bind(fun,_1,_2)(,);//fun(1,2)
. bind(fun,_2,_1)(,);//fun(2,1)
. bind(fun,_2,_2)(,);//fun(2,2)
. bind(fun,_1,)();//fun(1,3)
.}
.
.
20.3
21.3
22.3
23.4
24.4 绑定成员函数:
.#include<boost/bind.hpp>
.#include<iostream>
.#include<vector>
.#include<algorithm>
.using namespace boost;
.using namespace std;
.
.struct point
.{
. int x,y;
. point(int a=,int b=):x(a),y(b){}
. void print(){
. cout << "(" << x << "," << y << ")\n";
. }
. void setX(int a){
. cout << "setX:" << a << endl;
. }
. void setXY(int x,int y){
. cout << "setX:" << x << ",setY:" << y << endl;
. }
. void setXYZ(int x,int y,int z){
. cout << "setX:" << x << ",setY:" << y << "setZ:" << z << endl;
. }
.};
.
.int main()
.{
. point p1,p2;
. bind(&point::setX,p1,_1)();
. bind(&point::setXY,p1,_1,_2)(,);
. bind(&point::setXYZ,p2,_1,_2,_3)(,,);
. vector<point> v();
. //for_each的时候只需要_1就可以了
. for_each(v.begin(),v.end(),bind(&point::print,_1));
. for_each(v.begin(),v.end(),bind(&point::setX,_1,));
. for_each(v.begin(),v.end(),bind(&point::setXY,_1,,));
. for_each(v.begin(),v.end(),bind(&point::setXYZ,_1,,,));
.}
.
.setX:
.setX:,setY:
.setX:,setY:20setZ:
.(,)
.(,)
.(,)
.(,)
.(,)
.(,)
.(,)
.(,)
.(,)
.(,)
.setX:
.setX:
.setX:
.setX:
.setX:
.setX:
.setX:
.setX:
.setX:
.setX:
.setX:,setY:
.setX:,setY:
.setX:,setY:
.setX:,setY:
.setX:,setY:
.setX:,setY:
.setX:,setY:
.setX:,setY:
.setX:,setY:
.setX:,setY:
.setX:,setY:20setZ:
.setX:,setY:20setZ:
.setX:,setY:20setZ:
.setX:,setY:20setZ:
.setX:,setY:20setZ:
.setX:,setY:20setZ:
.setX:,setY:20setZ:
.setX:,setY:20setZ:
.setX:,setY:20setZ:
.setX:,setY:20setZ:

http://www.cnblogs.com/lzjsky/archive/2011/09/07/2169820.html

boost::bind的更多相关文章

  1. 1,Boost -> Bind

    #include <boost/bind.hpp> #include <boost/shared_ptr.hpp> #include <iostream> usin ...

  2. boost::bind 和 boost::function 基本用法

    这是一篇介绍bind和function用法的文章,起因是近来读陈硕的文章,提到用bind和function替代继承,于是就熟悉了下bind和function的用法,都是一些网上都有的知识,记录一下,期 ...

  3. 以boost::function和boost:bind取代虚函数

    转自:http://blog.csdn.net/Solstice/archive/2008/10/13/3066268.aspx 这是一篇比较情绪化的blog,中心思想是“继承就像一条贼船,上去就下不 ...

  4. (转)boost::bind介绍

    转自:http://www.cnblogs.com/sld666666/archive/2010/12/14/1905980.html 这篇文章介绍boost::bind()的用法, 文章的主要内容是 ...

  5. boost::bind实践2——来自《Beyond the C++ Standard Library ( An Introduction to Boost )》

    直接代码: 代码段1: #include <iostream> #include <string> #include <boost/bind/bind.hpp> c ...

  6. boost::bind实践

    第一部分源码为基础实践: /*Beyond the C++ Standard Library ( An Introduction to Boost )[CN].chm*/ /*bind的用法*/ #i ...

  7. 关于boost::function与boost::bind函数的使用心得

    最近开始写一个线程池,期间想用一个通用的函数模板来使得各个线程执行不同的任务,找到了Boost库中的function函数. Boost::function是一个函数包装器,也即一个函数模板,可以用来代 ...

  8. [转] [翻译]图解boost::bind

    http://kelvinh.github.io/blog/2013/12/03/boost-bind-illustrated/ 其实这是很久之前留的一个坑了,一直没有填.. 记得在刚开始看到 boo ...

  9. 使用BOOST BIND库提高C++程序性能

    Boost.Bind为函数和函数对象,值语义和指针提供语义了一致的语法.我们首先通过一些简单的例子来看看它的基本用法,之后我们会延伸到嵌套绑定以实现功能组合.理解bind用法的一个关键是理解占位符(p ...

随机推荐

  1. php学习笔记2--安装apache遇到的问题

    下载apache之后,以管理员身份运行cmd:1.httpd -k install2.httpd -k start出现无法运行的问题,可能的原因是443端口已被占用.在我的机器中是因为安装了VMwar ...

  2. Intent进行组件通信的一些体会

    Intent进行组件通信的原理 l  Intent协助应用间的交互与通讯 Intent负责对应用中一次操作的动作.动作涉及数据.附加数据进行描述.Android则根据此Intent的描述,负责找到对应 ...

  3. 22----2013.06.29---HTML--html介绍.超链接和图片,表格,表单,表单标签,meta,复习当天内容

    01 HTML HTML :Hypertext Markup Language   超文本标记语言(类似于 裸奔的人.) 作用:向用户展示信息. CSS: Cascading 层叠样式表(类似于 人的 ...

  4. 根据数据库内容动态生成html页面

    之前使用了很多方法,但是都很复杂. 项目里包括了数据库的管理页面,对数据库进行修改(新增,插入,删除)等之后,在另一个页面使用. 使用时采用按下相应label弹出所有信息的方法,以html的形式将数据 ...

  5. jQuery Ajax应用

    jQuery Ajax应用 本章主要了解jQuery的Ajax与传统的Ajax的区别,掌握JQuery的Ajax常用的方法与Ajax相关的函数. 详细内容,请点击jQuery Ajax应用查看:

  6. js 倒计时 button不可用

    function showtime() { fun_timedown(5); } function fun_timedown(time) { $("#timedown").val( ...

  7. Linux相关指令

    Linux相关指令 1.find文件搜索功能 find [目录列表] [匹配参数] [匹配标准] -name :按文件名称进行搜索 -group :按文件所属组进行搜索 -user :按文件拥有者进行 ...

  8. MySQL 5.7 Zip 安装(win7)

    参考官方文档 http://dev.mysql.com/doc/refman/5.7/en/windows-install-archive.html 2.3.5.1 Extracting the In ...

  9. [GeekBand] C++ 高级编程技术 (1)

    一.类型转换 class Fraction { public: explicit Fraction(int num, int den=1) : m_numerator(num), m_denomina ...

  10. STL--vector(转载)

    函数 表述 c.assign(beg,end) c.assign(n,elem) 将[beg; end)区间中的数据赋值给c. 将n个elem的拷贝赋值给c. c.at(idx) 传回索引idx所指的 ...