Effective C++ 条款54-55

来源:互联网 发布:2016年淘宝女装排行榜 编辑:程序博客网 时间:2024/05/18 17:01

条款54:让自己熟悉包括TR1在内的标准程序库

本书中的C++规范是在1998年制定的。现在C++11,即C++0x已经制定,且C++14在讨论中。本条款讨论内容是关于Boost库的,当时没有制定新标准,一些语言上的新特性以技术报告内容程序给大家,TR1代表Technical Report 1。

现在来看一下C++98加如的标准程序库有哪些:

STL,即Standard Template Library标准模板库。
iostreams,包含用户自定义缓冲功能、国际化I/O,以及先定义好的对象cin、cout、cerr和clog。
国家化支持,包括多区域能力。
数值处理,包括复数模板(complex)和纯数值数值(valarray)。
异常阶层体系(exception hierarchy)。
C89标准程序库。
TR1详细叙述了14个新组件(components,即程序机能单位),放在命名空间std::tr1内。下面展示一下TR1组件实例:

智能指针
tr1::function,可以表示任何callable entity(可调用物,即任何函数或函数对象),只要签名复合目标。
tr1::bind,它能做STL绑定器(binders)bind1st和bind2nd所做的每一件事,且更多。
把TR1组件划分为2组,第一组提供彼此互不相干的机能:

Hash table,可以用来实现set、map等。
正则表达式(Regular expression),包括以正则表达式为基础的字符串查找和替换等。
Tuples(变量组),这是标准程序库中的pair template的新一代制品。
tr1::array,本质是一个支持成员函数begin和end的数组。
tr1::mem_fn,这是个语句构造上与成员函数指针(member function pointer)一致的东西。
tr1::reference_wrapper,一个让reference的行为更像对象的设施。
随机数(random number)生成工具,它大大超越了rand。
数学特殊函数。
C99兼容扩充。
第二组TR1组件由更精巧的template编程技术构成

Type traits,一组traits classes(**条款**47),用以提供类型的编译期信息。
tr1::result_of,这是个template,用来推导函数调用的返回类型。
总结

C++的标准程序的主要机能由STL、iostream、locales组成。并包含C99标准程序库。
TR1添加了智能指针、一般化函数指针、hash-based容器、正则表达式以及另外10个组件的支持。
TR1只是一份规范,为获得TR1提供的好处,需要一个实物,例如Boost。

条款55:让自己熟悉Boost

Boost库是一个高质量、源码开发、平台独立、编译器独立的程序库。Boost是一个C++开发者集结的社群,其网址为http://boost.org。

Boost有着其他C++组织没有的影响里。1、Boost有C++标准委员会创建,其目标为:作为一个可被加入标准C++之各种功能的测试场。2、它接纳程序的过程,以公开进行的同僚(public peer review)为基础。

下面介绍Boost程序库的类目

字符串与文本处理
容器
函数对象和高级编程
泛型编程
模板编程
数学和数值
正确性与测试
数据结构
语言间的支持
内存杂项
总结

Boost是个社群,也是一个网址。致力于免费、源码开发、同僚复审的C++程序库开发。Boost在C++标准化过程中扮演深具影响里的角色。
Boost提供许多TR1组件实现品,以及其他许多程序库

0 0
原创粉丝点击