注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

守望

路越远,心越近。有多远,走多远!

 
 
 

日志

 
 

C++11标准库新特性  

2011-07-03 01:08:47|  分类: 编程 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
本文的主要内容来源:
http://www.softwarequalityconnection.com/2011/06/
        the-biggest-changes-in-c11-and-why-you-should-care/

C++在2003年的库技术报告1(TR1)论坛上经历了重大改变,TR1包括新的
容器类 (unordered_set,unordered_map,unordered_multiset和
unordered_multimap)和多个支持正则表达式、元组和函数对象封装器
等的新库。随着C++11标准的批准,TR1和自它以来新增的库
都被正式合并进入标准C++标准,以下是 C++11标准库的一些特性:

线程库:
  毫无疑问的,从程序员的角度来看,C++11最重要的新功能是并发,
  C++11有一个代表执行线程的线程类, promises and futures是在并行环境
  中用于同步的对象,async()函数模板启动并发任务,thread_local存储类型
  声明线程独有( thread-unique)的数据。如果你想快速浏览C++11线程库,
  请阅读 Anthony William的“C++0x中更简单的多线程”,链接如下:
  http://www.devx.com/SpecialReports/Article/38883

新智能指针类:
  C++98只定义了一个智能指针类auto_ptr,它现在已经被弃用了
  C++11包括新的智能指针类shared_ptr和最近添加的unique_ptr
  这两个都兼容其它标准库组件,所以你可以在标准容器内安全保存这些智能指针,
  并且用标准算法操作它们。

新算法:

  C++11标准库定义了新的算法all_of(),any_of()和none_of()来模拟集合操作,

  下面列出的内容在(first, first+n)范围内使用断言ispositive()和

  all_of(),any_of() and none_of()这些算法来检查该范围内的属性:

       #include <algorithm>
       //C++11 code
      //are all of the elements positive?

     
all_of(first, first+n, ispositive()); //false
 
     //is there at least one positive element?
     
any_of(first, first+n, ispositive());//true
     
// are none of the elements positive?
     
none_of(first, first+n, ispositive()); //false

   新增一种copy_n算法,使用copy_n()函数,复制一个包含5个元素的数组

  到另一个数组是很容易的事:

      #include <algorithm>
     
int source[5]={0,12,34,50,80};
     
int target[5];
      //copy 5 elements from source to target

     
copy_n(source,5,target);

  算法iota()创建了一个值顺序递增的范围,这好像是分配了一个初始值给*first,

  然后使用++前缀来使值递增。在下面的代码中,iota()分配连续值{10,11,12,13,14}

  给数组arr,并将{‘a’,’b’,’c’}分配给char数组c。

      include <numeric>
     
int a[5]={0};
     
char c[3]={0};
     
iota(a, a+5, 10); //changes a to {10,11,12,13,14}
     
iota(c, c+3, 'a'); //{'a','b','c'}

  C++11仍旧缺少一些有用的库,比如XML API,套接字,GUI,反射和

  一个合适的自动垃圾回收器。但C++11也提供了很多的新特性, 这些让C++变得更加

  安全,高效(是的,甚至比目前更高效,请参考 Google's benchmark tests),易学易用。

  如果C++11的变化看起来太大,不要被吓坏了。花些时间来逐步消化这些变化。

  最后,你可能就会同意Stroustrup的说法:

  C++11感觉就像一个新语言,一个更好的新语言。

  评论这张
 
阅读(3411)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017