• Effective C++ 条款54 让自己熟悉包括TR1在内的标准程序库


    1. TR1(Technical Report 1)是C++ 03标准的一个扩展,它并不属于C++ 03标准,只是一份草稿文件,用于指出下一版C++标准很可能吸收的特性.目前,它的大部分已被C++ 11采纳,成为官方标准.

    2. C++ 98列出的标准库的组成:

        STL(Standard Template Library,标准模板库).包含容器,迭代器,算法,函数对象,各种容器适配器(container adapter)和函数对象适配器(function object adapter)等.

        Iostream.覆盖用户自定缓冲功能,国际化I/O,以及预先定义好的对象cout和cin.

        国际化支持.比如多区域(multiple active locales)能力.像wchar_t(通常是16 bits/char)和wstring(有wchar_t组成的string)等类型都对促进Unicode有帮助.

        数值处理.包括复数模板好纯数值数组.

        异常阶层体系(exception hierarchy):包括base class exception及其derived class logic_error和runtime_error,以及更深继承的各个classes.

        C89标准程序库.

    3. TR1详细叙述了14个新组件(compnents),统统放在std命名空间的嵌套空间tr1内,包括:

        智能指针.如tr1::shared_ptr,tr1::weak_ptr等,详见条款13.

        tr1::function.此物可以表示任何callable entity(可调用物,也就是函数和函数对象),只要其签名复合目标,详见条款35.

        tr1::bind.它能够做STL绑定器(binders)bind1st和bind2nd所做的每一件事且增加了更多特性:tr1::bind可以和const金额non-const成员函数共同运作,可以和by-reference参数协同运作,而且不需要特殊协助就可以处理函数指针.详见条款35

        Hase tables.用来实现sets,multisets,maps,multimaps,每个容器接口都与之前标准相同,其命名为"tr1::unordered_set", "tr1::unordered_multiset", "tr1::unordered_map","tr1::unordered_multimap",说明它们和set,multiset,map,multimap的不同:以hash为基础的这些tr1容器内的元素并无可预期次序.

        正则表达式(Regular expressions).包括包括以正则表达式为基础的字符串查找和替换,或是从某个匹配字符串到另一个匹配字符串的注意迭代等等.

        Tuples(变量组).标准库pair template的新一代制品,pair只能持有两个对象,而tr1::tuple可持有任意个数对象.

        tr1::array.本质上是个"STL化"数组,即一个支持成员函数如begin和end的数组.不过tr1::array的大小固定,并不适用动态内存.

        tr1::mem_fn.其语句构造与成员函数指针一致,正如tr1::bind纳入并扩充了C++ 98的bind1st和bind2nd的能力,mem_fn纳入并扩充了C++98的mem_fun和mem_fun_ref的能力.

        tr1::reference_wrapper."让reference的行为更像对象",造成容器"犹如持有reference".

        随机数生成工具.大大超越了rand.

        数学特殊函数,包括Laguerre多项式,Bessel函数,完全椭圆积分(complete elliptic integrals)以及其他函数.

        C99 兼容扩充.一大堆函数和模板,用来将许多C99程序库特性带劲C++.

    第二组TR1组件由更精巧的template编程技术(包括模板元编程,template metaprogramming,见条款48)构成:

        Type traits.一组trait classes(见条款47),用以提供类型的编译期信息.如指出某个类型是否是个内置类型,是否提供virtual析构函数,是否是个empty class,是否可隐式转换为其他类型等等.TR1的type traits也可以显现该给定类型之适当齐位(proper alignment),这对定制性内存分配器(见条款50)的编写十分重要.

        tr1::result_of.这是个template,用来推导函数调用的返回类型,tr1::result_of使得"指涉函数返回类型"变得十分容易.

    4. TR1本身只是一份文档,并不涉及实现.然而TR1的14个组件中的10个已在免费的Boost程序库(见条款55)提供支持,虽然有些Boost机能并不完全吻合TR1规范.

        所有的boost组件都位于命名空间boost内,可以使用

    namespace std{
        namespace std::tr1=::boost;
    }
    View Code

    通过指涉std::tr1::来指涉::boost

  • 相关阅读:
    hdu 2485 Destroying the bus stations 迭代加深搜索
    hdu 2487 Ugly Windows 模拟
    hdu 2492 Ping pong 线段树
    hdu 1059 Dividing 多重背包
    hdu 3315 My Brute 费用流,费用最小且代价最小
    第四天 下载网络图片显示
    第三天 单元测试和数据库操作
    第二天 布局文件
    第一天 安卓简介
    Android 获取存储空间
  • 原文地址:https://www.cnblogs.com/reasno/p/4804178.html
Copyright © 2020-2023  润新知