??
bind是一组用于函数绑定的模板。在对某个函数进行绑定时,可以指定部分参数或全部参数,也可以不指定任何参数,还可以调整各个参数间的顺序。对于未指定的参数,可以使用占位符_1、_2、_3来表示。-1表示绑定后的函数的第1个参数,_2表示绑定后的函数的第2个参数,其他依次类推。
bind可以绑定到普通函数、函数对象、类的成员函数和类的成员变量。下面分别进行介绍。
1、普通函...
分类:
编程语言 时间:
2015-05-05 12:37:53
阅读次数:
211
??
在C++引入Boost库的lambda之前,许多编程语言,比如Lisp、Python和C#中就已经有了lambda。Boost库创建lambda的最初动机,是为了解决使用标准库时存在大量小的函数对象的定义的问题。而实际上,我们完全可以在需要使用这些函数对象的时候进行声明和定义,即就地进行。lambda库通过创建一个匿名的lambda表达式来代替实名的函数对象,大大简化了标准库的语法。
下...
分类:
其他好文 时间:
2015-05-05 12:37:25
阅读次数:
163
??
Boost库的bind是对STL的bind1st和bind2nd的进一步泛化,那么我们不免要问,bind相对于bind1st和bind2nd,都有哪些优点呢?下面通过一个具体的例子来说明这个问题。
假如有一个整数的容器vector,现在想找出容器中不大于10的元素的个数,那么我们可以有多种方式来实现:
1. 自由函数方式
BOOL LessEqualToTen(int nTem...
分类:
其他好文 时间:
2015-05-05 12:36:54
阅读次数:
129
??
shared_ptr是一个引用计数智能指针,用于共享对象的所有权。它可以从一个裸指针、另一个shared_ptr、一个auto_ptr、或者一个weak_ptr构造。还可以传递第二个参数给shared_ptr的构造函数,它被称为删除器(deleter)。删除器用于处理共享资源的释放,这对于管理那些不是用new分配也不是用delete释放的资源时非常有用。shared_ptr被创建后,就可以...
分类:
编程语言 时间:
2015-05-05 12:35:00
阅读次数:
179
??
C++ 11中的Lambda表达式用于定义并创建匿名的函数对象,以简化编程工作。Lambda的语法形式如下:
[函数对象参数] (操作符重载函数参数) mutable或exception声明 ->返回值类型 {函数体}
可以看到,Lambda主要分为五个部分:[函数对象参数]、(操作符重载函数参数)、mutable或exception声明、->返...
分类:
编程语言 时间:
2015-05-05 12:34:39
阅读次数:
220
概述跟Java和C#类似,OC创建的对象在堆上。与Java和C#不同的是Java和C#有垃圾回收机制,所以不需要程序员手动释放堆上的内存。而OC没有垃圾回收机制,必须手动管理内存的创建和释放。下面介绍一下OC内存管理内存管理的方式。引用计数器OC管理内存的方式类似C++中的智能指针,创建一个对象时,...
分类:
其他好文 时间:
2015-05-03 20:18:37
阅读次数:
176
0.通用规则boost自带一套编译工具bjam,bjam本身是跨平台的,并且也要自行编译出来。在boost目录下有bootstrap.sh和bootstrap.bat两个脚本分别用来编译*nix和windows下的bjam。bootstrap脚本可以传入参数,以在编译bjam过程中生成特定的编译boost的配置。编译bjam过程中生成的project-config.jam就是默认的配置,但还可以在运...
分类:
其他好文 时间:
2015-05-02 15:12:17
阅读次数:
232
Boost库是一个可移植、提供源码的C++库,作为标准库的后备,是C++标准化进程的发动机之中的一个。 Boost库由C++标准委员会库工作组成员发起,当中有些内容有望成为下一代C++标准库内容。在C++社区中影响甚大,是不折不扣的“准”标准库。 Boost因为其对跨平台的强调,对标准C++的强调....
分类:
其他好文 时间:
2015-04-30 10:19:58
阅读次数:
167
最近在学习python-twisted库,之前做异步并发编程一直都是使用c++,比如linux下的epoll机制,windows的IOCP机制,到后来经常使用的Boost::Asio库,比较搞的是c++上的异步经验反而有点阻碍我开始学习twisted库,原因如下:不管是epoll还是IOCP,都是当...
分类:
编程语言 时间:
2015-04-29 14:57:24
阅读次数:
352