第1章 Boost程序库总论
1.1关于Boost
1.1.1 什么是Boost
Boost库是一个功能强大、构造精巧、跨平台、开源并且完全免费的C++程序库。
1.1.3 使用Boost
Boost库的头文件与我们平常所用的头文件(*.h)或C++标准库头文件(没有后缀名)不同,它把C++类的声明和实现都放在了一个文件中,而不是分成两个文件,也就是“.h+.cpp”,故文件的后缀是.hpp。
之所以这么做当然是有理由的。首先就是与普通的C头文件(*.h)区分,另一个很重要的原因就是使Boost库不需要预告编译,直接引入程序员的工作即可编译链接,方便了库的使用。最后一个(无奈的)原因则是C++编译器的限制,许多编译器尚不支持c++标准提出的模板的分离编译模式(export关键字),而Boost库大量使用了模板,为了保持与各个编译器的兼容也不得不采用这种.hpp的头文件形式。
1.2 关于STLport
1.2.1 什么是STLport
STLport是一个完全C++98标准(及2003年修订)的一个免费的C++标准库实现。STLport具有很多其他STL实现所没有的优点。首先是高度的可移植性,可以配合市面上几乎所有的操作系统和编译器使用,使开发的程序能够在不同的编译平台上获得一致的标准库实现。其次是性能表现优秀,其原始版本SGISTL就以高效而闻名,STLport在移植特别注重性能与效率,而且100%完全符合C++标准规范。第三个优点是在标准之外增加了若干有用的扩展,如rope(增强的字符串类)、slist(单链表数据结构)、hash_map(散列映射容器),以及支持线程安全。
第2章 时间与日期
2.1 timer库概述
timer是一个很小的库,提供简易的度量时间和进度显示功能,可以用于性能测试等需要计时的任务,对于大多数的情况它足够用。
timer不适合高精度的时间测量任务,它的精度依赖于操作系统或编译器,难以做到跨平台。timer也不适合大跨度时间段的测量,可提供的最大时间跨度只有几百个小时,如果需要以天、月甚至年作为时间的单位则不能使用timer,应转向date_time库。
2.3 progress_timer
progress_timer也是一个计时器,它继承自timer,会在析构时自动输出时间,省去了timer手动调用elapsed()的工作,是一个用于自动计时相当方便的小工具。只要声明progress_timer对象,对象析构时,会自动输出流逝的时间。如果要在一个程序中测量多个时间,可以运用花括号{}以限定progress_timer的生命期。
2.4 progress_display
progress_display可以在控制台上显示程序的执行进度,如果程序执行很耗费时间,那么它能够提供一个友好的用户界面,不至于让用户在等待中失去耐心、甚至怀疑程序的运行是否出了问题。
第3章 内存管理
3.1 smart_ptr库概述
计算机系统中资源有很多种,内存是我们最常用到的,此外还有文件描述符、socket、操作系统handle、数据库连接等等,程序中申请这些资源后必须及时归还系统,否则就会产生难以预料的后果。
new、delete以及指针的不恰当运用是C++中造成资源获取/释放问题的根源,能否正确而明智地运用delete是区分C++新手与熟手的关键所在(常用的做法是在每个离开作用域的return语句前调用delete,并且使用try捕获所有可能发生的异常,然后在catch块中调用delete)。
第7章 容器与数据结构
容器是STL中最引人注意的部分,vector、deque、list、set和map分别实现了最常用的动态数组(向量)、双端队列、双向链表、集合和映射五种数据结构。
第9章 数学与数字
从纯数学的角度看,程序也不过是一个非常大的整数而已。