zoukankan      html  css  js  c++  java
  • Effective C++ 条款55 让自己熟悉Boost

    1. Boost是一个C++开发者集结的社群,也是一个可自由下载的C++程序库群,它的网址是http://Boost.org.C++组织和网站有很多,但Boost有两个特性是其他组织无可匹敌的:第一,Boost由C++标准委员会成员创设,因此和C++标准委员会之间有着独一无二的密切关系,作为一个"可被加入标准C++之各种功能"的测试场是Boost的目标之一,实际上,以TR1(见条款54)提案进入标准C++的14个新程序库,超过三分之二奠基于Boost的工作成果.第二,它以公开的同僚复审(public peer review)为基础,这对于阻挡低劣的程序库很有贡献.

    2. Boost内含数十个程序库,而且还不断有共多添加进来,boost程序库的主题非常繁多,区分为十个条目:

        字符串与文本处理:覆盖具备类型安全(type-safe)的printf-like格式化动作,正则表达式(此为TR1同类功能的基础,见条款54),以及语汇单元切割(tokenizing)和解析(parsing).

        容器:覆盖"接口与STL相似且大小固定"的数组,大小可变的bitsets以及多维数组.

        函数对象和高级编程:覆盖若干被用来作为TR1机能基础的程序库,包括用来随时随地创建函数对象的Lambda.Lambda的用法不是很直观:

    using manespace boost::lambda;
    std::vector<int> v;
    //针对v的每一个元素x,打印出x*2+10,其中_1是Lambda程序库针对当前元素的一个占位符号(placeholder)
    std::for_each(v.begin(),v.end(),std::cout<<_1*2+10<<'
    ');

        泛型编程(Generic programming):覆盖一大组traits class,见条款47

        模板元编程(Template metaprogramming):覆盖一个针对编译器assertions而写的程序库,以及Boost MPL程序库.MPL提供支持编译器实体(compile-time entities)诸如types的STL-like数据结构等.

    //创建一个list-like编译期容器,其中收纳三种类型:float,double,long double,并将其命名为"floats"
    typedef boost::mpl::list<float,double,long double> floats;
    //再创建一个编译期间用以收纳类型的list,以"floats"内的类型为基础,最前面加上int,新容器取名为types
    typedef boost::mpl::push_front<floats,int>::type types;

        数学和数值(Math and numerics):包括有理数,八元数和四元数(octonions and quaternions),常见的公约数(divisior)和烧焦的多重运算,随机数等.

        正确性与测试:覆盖用来将隐式模板接口(implict template interface)形式化的程序库,以及针对"测试优先"编程形态而设计的编程.

        数据结构:覆盖leei型安全(type-safe)大的unions,以及tuple程序库.

        语言间的支持:包括允许C++和Python之间的无缝互操作性(seamless interoperability).

        内存:覆盖Pool程序库,用来做出高效率且区块大小固定的分配器(见条款50),以及多变化的智能指针(smart pointers,见条款13),包括(但不仅仅是)TR1智能指针.另一个non-TR1智能指针是scoped_array,那是个auto_ptr-like智能指针,用于动态分配数组.

        杂项:包括CRC检验,日期和时间的处理,在文件系统上来回移动等等.

    3. Boost提供的程序库功能强大,但并非万能,例如目前它没有提供针对GUI开发而设计的程序库,也没有用以连通数据库的程序库.

  • 相关阅读:
    动态生成 Excel 文件供浏览器下载的注意事项
    JavaEE 中无用技术之 JNDI
    CSDN 泄露用户密码给我们什么启示
    刚发布新的 web 单点登录系统,欢迎下载试用,欢迎提建议
    jQuery jqgrid 对含特殊字符 json 数据的 Java 处理方法
    一个 SQL 同时验证帐号是否存在、密码是否正确
    PostgreSQL 数据库在 Windows Server 2008 上安装注意事项
    快速点评 Spring Struts Hibernate
    Apache NIO 框架 Mina 使用中出现 too many open files 问题的解决办法
    解决 jQuery 版本升级过程中出现 toLowerCase 错误 更改 doctype
  • 原文地址:https://www.cnblogs.com/reasno/p/4804607.html
Copyright © 2011-2022 走看看