第九章:杂项讨论
条款53:不要轻易忽视编译器的警告
条款54:让自己熟悉包括TR1在内的标准程序库
TR1组件实例:
-
智能指针:tr1::shared_ptr
-
tr1::function:此物可以表示任何callable entity(可调用物,也就是任何函数或函数对象)
void registerCallback(string func(int)); //参数类型是函数,该函数接受一个int并返回一个string
//也可以写成
void registerCallback(std::tr1::function<std::string(int)> func); //这种写法更有弹性
一些独立组件
-
Hash tables
-
正则表达式
-
Tuples(变量组):是pair的新一代制品
-
tr1::array:大小固定,并不使用动态内存
-
tr1::mem_fn
-
随机数:大大超越了rand
-
数学特殊函数:包括laguerre多项式,Bessel函数,完全椭圆积分
template编程技术
-
Type traits:一组traits classes,用以提供类型types的编译期信息。给予一个类型T,TR1的type traits可以指出T是否是个内置类型,是否提供virtual析构函数,是否是个empty class,可隐式转换为其他类型U吗…等等。
-
tr1::result_of这是个template,用来推导函数调用的返回类型。当我们编写templates时,能够“指涉”函数调用动作所返回的对象类型。但是该类型往往取决于函数的参数类型。tr1::result_of使得“指涉函数返回类型”变得十分容易。
条款55:让自己熟悉Boost
- Boost提供许多TR1组件的实现品,以及其他许多程序库
提供的功能:
-
字符串与文本处理
-
容器
-
函数对象和高级编程(lambda表达式)
-
泛型编程
-
模板元编程
-
数学和数值:包括有理数,八元数,四元数,随机数等
-
语言间的支持:包括允许C++和python之间无缝互操作
-
内存:覆盖Pool程序库,用来做出高效率而区块大小固定的分配器。