族谱网 头条 人物百科

C++ Technical Report 1

2020-10-16
出处:族谱网
作者:阿族小谱
浏览:226
转发:0
评论:0
概要编译器并不需要保证包含TR1的组件,因为TR1并非官方标准的一部分。顺带一提,Boost提供了TR1大部分的实现,数个编译器/库开发商也已提供了各自的实现版本。TR1并不代表下一届标准的全部;举例而言,下一届的标准C++11包含了线程的支持。新的组件被放置在std::tr1的名字空间(namespace)里,以和现在的标准库做区别。TR1的内容TR1包含以下组件:一般用途引用包装器(ReferenceWrapper)来自Boost.Ref在头文件中增加了-cref、ref、reference_wrapper可以对算法(algorithms)或仿函数(functionobjects)传递引用(references),而不是传递副本。一个wrapperreference是由模板类reference_wrapper产生的实体(instance)获得。wrapperreference近似于C+...

概要

编译器并不需要保证包含TR1的组件,因为TR1并非官方标准的一部分。顺带一提,Boost提供了TR1大部分的实现,数个编译器/库开发商也已提供了各自的实现版本。

TR1并不代表下一届标准的全部;举例而言,下一届的标准C++11包含了线程的支持。

新的组件被放置在std::tr1的名字空间(namespace)里,以和现在的标准库做区别。

TR1的内容

TR1包含以下组件:

一般用途

引用包装器(Reference Wrapper)

来自Boost.Ref

在头文件中增加了 - cref、ref、reference_wrapper

可以对算法(algorithms)或仿函数(function objects)传递引用(references),而不是传递副本。

一个wrapper reference是由模板类reference_wrapper产生的实体(instance)获得。wrapper reference近似于C++语言中的引用。

使用ref以获得任何实例的wrapper reference(对常数引用const &使用cref)。

wrapper reference对模板函数(template function)尤其有用,当模板参数推导不出引用的时候(示例如下:)

voidf(int&r){r++;}templatevoidg(Functf,Argt){f(t);}intmain(){inti=0;g(f,i);// "g" 被实例化cout<<i<<endl;// 輸出:0g(f,ref(i));// "g" 被实例化cout<<i<<endl;// 輸出:1}

智能指针(Smart Pointers)

基于Boost Smart Pointer library

由头文件增加了 - shared_ptr、weak_ptr等

将Resource Acquisition Is Initialization(RAII)手法用于内存管理和异常安全性。

仿函数

以下四个模块被加进头文件之中:

多形态的函数包装器(Polymorphic Function Wrapper)

function

基于Boost.Function

存储任何使用特定函数签名的"可调用物"(函数指针、成员函数指针、仿函数),不需要可调用物确切的类型。

仿函数绑定器(Function Object Binders)

bind

采纳自Boost Bind library

标准std::bindt和std::bind2nd的通用版

将参数绑定给仿函数,并且允许函数的结合。

函数返回类型(Function Return Types)

result_of

采纳自Boost

决定函数调用的返回类型

mem_fn

mem_fn

采纳自Boost Mem Fn library

标准std::mem_fun和std::mem_fun_ref的加强版

允许成员函数指针能够像仿函数一样

元编程和类型特性(Type Traits)

新的头文件 - is_pod、has_virtual_destructor、remove_extent等

采纳自Boost Type Traits library

允许类编查询以及类别间的转换,可促进元编程

数值工具

随机数产生器

新的头文件 - variate_generator、mersenne_twister、poisson_distribution等

采纳自Boost Random Number Library

数学函数

新的/头文件 - beta、legendre等

23种数学函数

容器

多元组类型(Tuple Types)

新头文件 - tuple

采纳自Boost Tuple library

标准std::pair的扩充

固定尺寸的元素集合,元素可以是不同的类型

定量数组(Fixed Size Array)

新头文件 - array

来自Boost Array library

与动态数组类型,像是标准的std::vector相反,是静态的矩阵,但是能够享受类似于begin()等与std::vector相似的接口。

哈希表(Hash Tables)

新、头文件

完全是新的实现,不派生自既有之程序库。与既有之程序库API并不完全兼容

就如同所有的哈希表提供常数时间的元素查找,但最坏情况查找时间与容器的大小呈线性关系。

正则表达式(Regular Expressions)

新头文件 - regex、regex_match、 regex_search、regex_replace等

来自Boost RegEx library

pattern matching library

C的兼容性

C++被设计成与C语言兼容,但由于不同的标准,C++并不是C的严格超集合。TR1试图调和这些差异,通过对各种头文件,如、、等进行扩充。 这些改变帮助C++能够与C99版本的C标准更为一致(并非所有C99都包含于TR1)。

关系项目

C++11,C++新标准

C99,C语言标准

Boost library,提供大量的C++程序库,数个包含于TR1

STL标准模板库,现行C++标准程序库的一部分

参考文献

ISO/IEC JTC1/SC22/WG21.Draft Technical Report on C++ Library Extensions(PDF). 2005-06-24. 

Becker, Peter. The C++ Standard Library Extensions: A Tutorial and Reference. Addison-Wesley Professional. 2006. ISBN 0-321-41299-0. 


免责声明:以上内容版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。感谢每一位辛勤著写的作者,感谢每一位的分享。

——— 没有了 ———
编辑:阿族小谱
发表评论
写好了,提交
{{item.label}}
{{commentTotal}}条评论
{{item.userName}}
发布时间:{{item.time}}
{{item.content}}
回复
举报
点击加载更多
打赏作者
“感谢您的打赏,我会更努力的创作”
— 请选择您要打赏的金额 —
{{item.label}}
{{item.label}}
打赏成功!
“感谢您的打赏,我会更努力的创作”
返回

更多文章

更多精彩文章
扫一扫添加客服微信