您的位置:首页 > 编程语言 > C语言/C++

Effective C++ 条款54-55

2015-06-18 10:44 316 查看

条款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组件实现品,以及其他许多程序库
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: