基本就是记录一些boost库中可能用到部分的名字,具体实现以及使用细节还是请具体去书里看,这个大概就是目录的目录吧。
第2章 时间与日期
- timer,小精度短时间的时间测量。
- progess_timer 析构时自动输出事件,可以配合大刮号使用。
- progress_display,每次++展示目前进度。
- date_time,内容又多又复杂。
第3章 内存管理
- shared_ptr<void> p((void*)0, fun);可以在退出的时候自动执行fun。
- pool,内存池,一般只能用int、double等自带的类型,不涉及构造函数。
- 3种继承:1、private:只能由该类中的函数、其友元函数访问,不能被任何其他访问,该类的对象也不能访问。2、protected:可以被该类中的函数、子类的函数、以及其友元函数访问,但不能被该类的对象访问。3、public:可以被该类中的函数、子类的函数、其友元函数访问,也可以由该类的对象访问。
- 虚继承:虚拟继承是多重继承中特有的概念。虚拟基类是为解决多重继承而出现的。如:类D继承自类B1、B2,而类B1、B2都继承自类A,因此在类D中两次出现类A中的变量和函数。为了节省内存空间,可以将B1、B2对A的继承定义为虚拟继承,而A就成了虚拟基类。实现的代码如下:
- object_pool保护继承自pool。使用construct构造,最多3个参数,或者可以生成脚本/自己写构造函数。
- singleton_pool,单件的pool,因为是静态的所以可以直接用::访问。
第4章 实用工具
- optional,构造函数中配合条件,可以区分返回无效值(类似1/0)。
- boost::assign,方便的快速加入内容。(代替push_back)。
- 可以用singleton_pool与serialization中的singleton来实现单例模式。
- tribool,包含不确定的布尔值。
- boost.operators,自动生成操作符重载。
- exception更好的捕获异常。
- uuid,全世界唯一的代码(编号)。其中可以用sha1将任意长字符串变为一个20长度独一无二的摘要。
- BOOST_CURRENT_FUNCTION显示目前的函数名。
- 可以使用基类链技术解决多重继承。
第5章 字符串与文本处理
- lexical_cast,完成字符串与数字时间的相互转换。
- format实现类似printf的简洁功能。
- boost::string,支持的算法更多。包含了很多常见的算法。
- tokenizer,用来把字符串分割成单词。
- xpressive正则表达式。
第6章 正确性与测试
- boost.assert断言这个为真。
- boost_assert只有debug模式才会编译,可以并上一句话来增加判断消息。
- static_assert,将断言提前到编译期,所以必须能够编译期求值。
- test库进行测试
第7章 容器与数据结构
- dynamic_bitset,动态可增长。并且支持位操作。
- bimap,双向映射
- circular_buffer,循环缓冲区
- tuple,功能很多很多,get为编译期确定。
- any可以存放所有东西的容器。让c加加从强类型变成弱类型。可以搭配容器,存任何东西。
- varient,储存多个类型的联合。他有界,用户需要指定类型。
- multi_array,多维数组。
- property_tree,保存多个属性的树状结构。读取xml等。
算法
- for_each,可以用std::for_each,传入迭代器,第三个参数为函数。
- minmax,同时得到最大最小值。使用tie绑定最小最大值。
数学与数字
- rational,分数,有理数。最大公约数,最小公倍数。
- crc检验。
- random可以生成各种随机数。
操作系统相关
- io_state_savers保存流状态。
- system系统级别的错误。
- filesystem,跨平台操作文件目录、内容。
- program_options,添加不同的运行时指令。
函数与回调
- result_of确定一个调用表达式的返回形式。
- ref,传入引用。
- referen_wrapper,引用类型包装器。ref与cref是referen_wrapper的工厂函数。
- bind,绑定参数。绑定时_1不一定在第一个位置,但是他对应的是第一个量。bind绑定类内函数时有独特的做法。这时候第一个&,代表成员函数的指针。自己写函数对象(应该就是重载()最好自己定义一下result_type)。
- function,在<>内声明返回type,刮号内为参数列表(的type)。可以配合bind,绑定类,使用类内函数。function回调可以解耦客户代码,不必绑定一个特定的回调函数。
- signals,线程安全的观察者模式。里头的例子有点意思,有机会可以实现下看看?但是我还是没看出来意义是啥。可以插槽调度。
并发编程
- thread中sleep就是怕主线程提前把子线程析构了。
- asio可移植的异步/同步io操作。
- 进程间通信ipc。
编程语言支持
- python库使用python