53.1 严肃对待编译器发出的警告信息。努力在你的编译器的最高警告级别下争取"无任何警告"。
在忽略某个警告之前,请确保你了解它意图说出的精确意义。
53.2 不要过度依赖编译器的报警能力,因为不同的编译器对待事情的态度并不相同。一旦移植
到另一个编译器上,你原本依赖的警告信息有可能消失。
54.1 C++98标准库
成分 | 包含 |
---|---|
STL | 容器、迭代器、算法、函数对象、容器适配器、函数对象适配器 |
Iostreams | 用户自定缓冲功能、国际化I/O,以及cin,cout,cerr,clog |
国际化支持 | 包括多区域能力,如wchar_t、wstring |
数值处理 | 复数模板、纯数值数组 |
异常层次体系 | exception.logic_error,runtime_error |
C89标准程序库 | 1989 C 标准库 |
54.2 TR1(Technical Report 1)组件
组件 | 描述 | ||
---|---|---|---|
智能指针 | shared_ptr,weak_ptr | ||
tr1::function | 是个template,以其目标函数的签名(指明参数和返回值类型)为参数。如 std::tr1::function | ||
tr1::bind | 是第二代绑定工具,比第一代bind1st,bind2nd好用 | ||
其它 | 独立的 | Hash tables | 实现sets,multisets,maps,multimaps |
正则表达式 | 字符串查找和替换 | ||
Tuples | 可持有任意个数的对象,而pari只有两个对象 | ||
tr1::array | 支持begin,end的数组,它的大小固定 | ||
tr1::mem_fn | 成员函数指针,扩充了mem_fun,mem_fun_ref的能力 | ||
tr1::reference_wrapper | 让引用的行为更像对象 | ||
随机数生成工具 | 超越了rand | ||
数学特殊函数 | Laguerre多项式、Bessel函数、完全椭圆积分等 | ||
C99兼容扩充 | 一堆函数和模板带进C++ | ||
template | Type traits | 一组traits classes | |
tr1::result_of | 一个template,用来推导函数调用的返回类型 |
54.3 TR1自身只是一份规范,为获得TR1提供的好处,你需要取得实现代码。Boost程序库包含
了其中10个组件。
55.1 Boost开发者社区 Boost C++ Libraries
55.2 Boost组件
类别 | 包含 |
---|---|
字符串与文本处理 | 类型安全的printf-like格式化动作、正则表达式及语汇单元切割和解析 |
容器 | array、大小可变的bitsets以及多维数组 |
函数对象和高级编程 | 如lambda可以随时随地创建函数对象 |
泛型编程 | traits classes |
模板元编程 | TMP,MPL(元编程程序库) |
数学和数值 | 有理数、八元数和四元数、常见公约数等 |
正确性与测试 | 用来将隐式模板接口形式化的程序库 |
数据结构 | 类型安全的unions以及tuple程序库 |
语言间的支持 | 允许C++和Python之间的无缝互操作性 |
内存 | Pool程序库,用来做出高效率而区块大小固定的分配器以及多变化的智能指针 |
杂项 | CRC检验、日期和时间的处理、在文件系统上来回移动等待 |
全书完