条款55:让自己熟悉 Boost

Boost是一个为C++标准提供测试环境的开源库集合。其特点包括与C++标准委员会的紧密合作,以及通过同行评审的方式接纳新库。Boost涵盖字符串处理、泛型编程、数学计算、正确性测试等多个方面。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

       Boost有两点被认为是其它组织所不能比拟的。首先,它唯一地与 C++ 标准委员会之间有着紧密和有影响力的关系。Boost 是由委员会成员所创建,且现在 Boost 成员与委员会成员之间继续保持着许多的交迭。除此之外,Boost的目标之一就是为可能加入到C++标准中的能力但当测试环境。这一切的结果是 14 个新加入到 TR1 (看条款 54 ) 中的库有超过 2/3 以 Boost 的工作为基础。第二个特别特性是它接受库的程序。它基于公开的同级评审(peer review)。如果你想贡献你的库给 Boost,你必须先将它张贴到Boost的开发者邮件列表上以便估计这个库的影响,同始开始你工作的预选审查程序。如此进入一个被boost概述为“讨 论、精练,多次提交直到感到满意”的循环。

      Boost众多的库致力于丰富的主题:

      1、字符串和文本处理,包括类型安全(type-safe) 的形如printf的格式化库,正则表达式(TR1中相似的功能的基础,看条款54),tokenizing 和 parsing 。
      2、容器,包括STL风格接口的大小固定的数组(fixed-size arrays),可变大小bitsets,和多维数组(multidimensional arrays.)。
      3、函数对象(Function objects)和高阶编程(higher-order programming),包括几个TR1中作为功能性基础使用的库。一个有趣的库是 Lambda, 它使得凭空创建一个函数对象(function objects)如此容易,你甚至不需要知道到你做了什么:
              using namespace boost::lambda;    //使 boost::lambda可见
              std::vector<int> v;
              ...
              std::for_each(v.begin(), v.end(),     //遍历v中的元素x,
              std::cout << _1 * 2 + 10 << "n"); //输出 x*2+10;
                                                                  // "_1"是Lambda
                                                                  //为当前元素设置的置位符
      4、 泛型编程(Generic programming),包括一个traits类的扩展集(看条款 47关于traits 的资料)。 
      5、 模板元编程(Template metaprogramming TMP 看条款 48), 包括一个Boost MPL 这样的编译期断言库(compile-time assertions)。在MPL极好事情之一是支持STL风格的形如类型(types)的编译期实体的数据结构。 
              //创建一个形如list(list-like)的编译期容器,容器包括3种数据类型(float, double 和 long double),并命名为"floats"。
              typedef boost::mpl::list<float, double, long double> floats;
             //创建一个新的编译期的由"floats"及在其前端插入的"int"所组成类型的list;并命名新的容器为"types"。
             typedef boost::mpl::push_front<floats, int>::type types;
      6、包涵各种数据类型的容器(经常被称为typelists,虽然他们也基于mpl::list和mpl::vector创建) 打开了通向强大且重要的TMP应用的广阔天地。
      7、数学和数值(Math and numerics),包括有理数库(rational numbers);octonions和四元数(quaternions);最大公约数(greatest common divisor)和最小公倍数(common multiple computations);随机数(另一个影响TR1相关功能的库)。
      8、 正确性和测试(Correctness and testing),包括形式化隐式模板接口(formalizing implicit template interfaces (阅读条款 41)) 方便测试优先(test-first) 编程。 

      9、 数据结构(Data structures),包括类型安全的unions库(例:存储变量的"any"类型)和导致相应TR1功能的tuple库。

      10、 交互语言支持(Inter-language support),包括充许在C++和Python之间进行无缝协作的库。
      11、内存,包括高性能的固定大小分配的Pool库;多样的智能指针,包括(但不限于)在TR1中的智能指针。非TR1智能指针是scoped array, 为动态分配数组的auto_ptr风格的智能指针; 条款44展示一个使用的例子。


       这些只是你能在Boost中找到的库的一部分。我建议你立刻去读http://boost.org

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值