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

/*条款54:让自己熟悉包括TR1在内的标准程序库*/
//c++standard 98年被标准委员会核准了,03年发布了一个不很重要的错误修正版 08年左右发布了 c++standard2.0 日期不确定的一版叫c++0x 指 200x版c++
//c++0x 覆盖了某些有趣的语言新特性,但大部分新机能都是以标准程序库的扩充形式体现,我们知道的某些新的程序库机能被详细叙述在TR1的文档内Technical Report 1
//TR1宣示了一个新版C++的来临,不熟悉TR1 机能而却奢望成为一位高效的c++程序员是不可能的,TR1提供的机能几乎对每一种程序库和每一种应用程序都带来利益
/* 这里是98列入的主要成分
 1 STL :vector string map,iterator,algorithms function_objects(less,greater),stack,priority_queue, mem_fun,not1
 2 Iostream 覆盖用户自定缓冲功能,国际化IO,以及预先定义好的对象cin,cout,cerr,clog
 3 国际化支持,多区域能力,multiple,active locales wchar_t wstring 
 4 复数模板complex 纯数值数组 valarray
 5 异常阶层体系 base class exception derived classes logic_error runtime_error 以及更深继承的各个classes
 6 c89 标准程序库 
 7 TR1 详细叙述了14个新组件(也就是程序机能单位) 统统放在std命名空间内 更正确地说是在其嵌套 命名空间tr1内,因此shared_ptr的命名是std::tr1::shared_ptr
 8 智能指针 shared_ptr(如内置指针,但会记录有多少个shared_ptrs共同指向同一个对象,这便是所谓的引用计数,一亘最后 一个这样的指针 被 销毁,这个对象会自动删除,但如果两个或多个对象内含shared_ptrs 并形成环状,这个环形会造成每个对象的引用次数都大于0,即使指向这个环形的所有指针都已被销毁(也就是这一群对象整体看起来已无法触及(计数还在,但指针没了。。),这也是为什么会有weak_ptr的原因)) weak_ptr(非环形shared_ptr-based数据结构中的环形感生指针,weak_ptr并不参与引用计数的计算,当最后 一个指向某个对象的shared_ptr被销毁,纵使还有weak_ptr继续指向同一个对象,该对象仍旧会被删除,这种情况下的weak_ptr会被自动标示无效) 
 9 TR1::function 此物得以表示任何可调用物(函数,函数对象),只要签名符合目标,
  // 假设我们想注册一个callback函数 该函数接受一个int并返回一个string ,我们可以这样写
  // void registerCallback(std::string func(int));参数里的函数名也可以省略像下面
  // void registerCallback(std::string (int));tr1::function 是个template 以其目标签名为参数
  // void registerCallback(std::tr1::function<std::string(int)>func);
  // 参数func 接受任何可以调用物 ,只要该可调用物的签名与std::string (int)一致
 10 tr1::bind 它能够做stl绑定器bind1st bind2nd 所做的每一件事 ,和前任绑定器不同的是,tr1::bind可以和const ,non-const成员函数协同运作,可以和by-reerence 参数协同运作,
 11 Hash tables 
 12 regular experssions  包括正则表达式为基础的字符串查找和替换,或是从某个匹配字符串到另一个匹配字符串的逐一迭代等等
 13 Tuples(变量组) 这是标准程序库中的pair template的新一代制品,pair 只能持有两个对象,tuple可持有任意个数的对象,
 14 tr1::array 本质上是个STL化数组,即一个支持成员函数如begin end的数组,不过它的大小固定,并不使用动态内存
 15 tr1::mem_fun 这个语句构造上与成员函数指针一致的东西,其纳入并扩充了98的mem_fun mem_fun_ref的能力
 16 tr1::reference_wrapper 一个让reference的行为更像对象的设施,它可以造成容器犹如持有reference,而容器实际上只能持有对象或指针
 17 随机数生成工具 它大大超越了rand
 18 数学特殊函数 包括laguerre多项式 bessel函数 埃塞俄比亚椭圆积分。。。
 19 c99兼容扩充,这是一大堆函数和模板 
 20 type traits 一组traits classes 用以提供类型的编译期信息,给予一个类型T,tr1的type straits可以指出T是否是个内置类型,是否提供虚析构函数,是否是个空类,可隐匿 转换为其他类型U吗。。。也可以上显现该给定类型的适当齐位,这对定制型内存分配器的编写人员是十分关键的信息
 21 tr1::result_of 这是个template 用来推导函数调用 的返回类型,
 tr1的多数组件奠基于BOOST
 namespace std{
	namespace tr1 = ::boost ;// namespace std::tr1是namespace boost 的一个别名
 }

*/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值