effective C++ 条款 55:让自己熟悉boost
高质量,源码开放、平台独立、编译器独立的程序库。 http://boost.org,它和c++标准委员会之间有着独一无二的密切关系,并对委员会深具影响力。它以公开进行的同僚复审(public peer review)为基础接纳程序库。
boost对付的主题非常繁多,包括:
字符串与文本处理,
容器,
函数对象和高级编程,
lambda,可以让我们轻松的随时随地创建函数对象
using namespace boost::lambda; //让boost::lambda的机能曝光
std::vector<int> v;
std::for_each(v.begin(), v.end(), std::cout << _1*2 +10 << "\n"); //针对v中的每一元素x,印出x*2+10;
//其中“_1”是lambda程序库针对当前元素的一个占位符号(placeholder)泛型编程,
模板元编程,
//list-like编译期容器,收纳三个类型:
//(float,double, long double),
typedef boost::mpl::list<float, double, long double> floats;
//在创建一个编译期间用以收纳类型的list, 以“floats”内的类型为基础
//最前面再加上“int”。新容器取名叫“types”
typedef boost::mpl::push_front<floats, int>::Type types;数学和数值,
正确性测试,覆盖用来将隐式模板接口(implicit template interface,见条款41)形式化的程序库,以及针对“测试优先”编程形态而设计的措施。
数据结构,tuple程序库
语言间的支持,包括允许c++和python间的无缝互操作性。
内存,覆盖pool程序库,用来作出高效率而区块大小固定的分配器,以及多变化的智能指针,包括tr1的智能指针。non-tr1智能指针scope_array,那是个auto_ptr-like智能指针,用来动态分配数组。条款44有其用法。
杂项,包括crc检验、日期和时间处理等等