Boost程序库开发指南阅读笔记

基本就是记录一些boost库中可能用到部分的名字,具体实现以及使用细节还是请具体去书里看,这个大概就是目录的目录吧。


第2章 时间与日期

  1. timer,小精度短时间的时间测量。
  2. progess_timer 析构时自动输出事件,可以配合大刮号使用。
  3. progress_display,每次++展示目前进度。
  4. date_time,内容又多又复杂。

第3章 内存管理

  1. shared_ptr<void> p((void*)0, fun);可以在退出的时候自动执行fun。
  2. pool,内存池,一般只能用int、double等自带的类型,不涉及构造函数。
  3. 3种继承:1、private:只能由该类中的函数、其友元函数访问,不能被任何其他访问,该类的对象也不能访问。2、protected:可以被该类中的函数、子类的函数、以及其友元函数访问,但不能被该类的对象访问。3、public:可以被该类中的函数、子类的函数、其友元函数访问,也可以由该类的对象访问。
  4. 虚继承:虚拟继承是多重继承中特有的概念。虚拟基类是为解决多重继承而出现的。如:类D继承自类B1、B2,而类B1、B2都继承自类A,因此在类D中两次出现类A中的变量和函数。为了节省内存空间,可以将B1、B2对A的继承定义为虚拟继承,而A就成了虚拟基类。实现的代码如下:
  5. object_pool保护继承自pool。使用construct构造,最多3个参数,或者可以生成脚本/自己写构造函数。
  6. singleton_pool,单件的pool,因为是静态的所以可以直接用::访问。

第4章 实用工具

  1. optional,构造函数中配合条件,可以区分返回无效值(类似1/0)。
  2. boost::assign,方便的快速加入内容。(代替push_back)。
  3. 可以用singleton_pool与serialization中的singleton来实现单例模式。
  4. tribool,包含不确定的布尔值。
  5. boost.operators,自动生成操作符重载。
  6. exception更好的捕获异常。
  7. uuid,全世界唯一的代码(编号)。其中可以用sha1将任意长字符串变为一个20长度独一无二的摘要。
  8. BOOST_CURRENT_FUNCTION显示目前的函数名。
  9. 可以使用基类链技术解决多重继承。

第5章 字符串与文本处理

  1. lexical_cast,完成字符串与数字时间的相互转换。
  2. format实现类似printf的简洁功能。
  3. boost::string,支持的算法更多。包含了很多常见的算法。
  4. tokenizer,用来把字符串分割成单词。
  5. xpressive正则表达式。

第6章 正确性与测试

  1. boost.assert断言这个为真。
  2. boost_assert只有debug模式才会编译,可以并上一句话来增加判断消息。
  3. static_assert,将断言提前到编译期,所以必须能够编译期求值。
  4. test库进行测试

第7章 容器与数据结构

  1. dynamic_bitset,动态可增长。并且支持位操作。
  2. bimap,双向映射
  3. circular_buffer,循环缓冲区
  4. tuple,功能很多很多,get为编译期确定。
  5. any可以存放所有东西的容器。让c加加从强类型变成弱类型。可以搭配容器,存任何东西。
  6. varient,储存多个类型的联合。他有界,用户需要指定类型。
  7. multi_array,多维数组。
  8. property_tree,保存多个属性的树状结构。读取xml等。

算法

  1. for_each,可以用std::for_each,传入迭代器,第三个参数为函数。
  2. minmax,同时得到最大最小值。使用tie绑定最小最大值。

数学与数字

  1. rational,分数,有理数。最大公约数,最小公倍数。
  2. crc检验。
  3. random可以生成各种随机数。

操作系统相关

  1. io_state_savers保存流状态。
  2. system系统级别的错误。
  3. filesystem,跨平台操作文件目录、内容。
  4. program_options,添加不同的运行时指令。

函数与回调

  1. result_of确定一个调用表达式的返回形式。
  2. ref,传入引用。
  3. referen_wrapper,引用类型包装器。ref与cref是referen_wrapper的工厂函数。
  4. bind,绑定参数。绑定时_1不一定在第一个位置,但是他对应的是第一个量。bind绑定类内函数时有独特的做法。这时候第一个&,代表成员函数的指针。自己写函数对象(应该就是重载()最好自己定义一下result_type)。
  5. function,在<>内声明返回type,刮号内为参数列表(的type)。可以配合bind,绑定类,使用类内函数。function回调可以解耦客户代码,不必绑定一个特定的回调函数。
  6. signals,线程安全的观察者模式。里头的例子有点意思,有机会可以实现下看看?但是我还是没看出来意义是啥。可以插槽调度。

并发编程

  1. thread中sleep就是怕主线程提前把子线程析构了。
  2. asio可移植的异步/同步io操作。
  3. 进程间通信ipc。

编程语言支持

  1. python库使用python

猜你喜欢

转载自blog.csdn.net/zhxue_11/article/details/89045289