麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 應用 > 軟件技巧 > 正文

開始使用C++11的9個理由

2024-07-16 17:45:14
字體:
來源:轉載
供稿:網友
如果你的代碼工作正常并且表現良好,你可能會想知道為什么還要使用C++ 11。當然了,使用用最新的技術感覺很好,但是事實上它是否值得呢?在我看來,答案毫無疑問是肯定的。我在下面給出了9個理由,它們分為兩類:性能優勢和開發效率。
獲得性能優勢
理由1:move語義(move semantics)。簡單的說,它是優化復制的一種方式。有時候復制很顯然是浪費的。如果你從一個臨時的string對象復制內容,簡單的復制指針到字符緩沖區將比創建一個新的緩沖區再復制要高效得多。他之所以能工作是因為源對象超出了范圍。
然而,在這以前C++并沒有判斷源對象是不是臨時對象的機制。move語義通過除了復制操作外還允許你有一個move構造函數(move constructor)和一個move賦值運算(move assignment)符來提供這個機制。
你知道嗎?當你在Visual Studio 2010中使用標準庫中的類如string或vector時,它們已經支持move語義了。這可以防止不必要的的復制從而改善性能。
通過在你的類中實現move語義你可以獲得額外的性能提升,比如當你把它們存儲到STL容器中時。還有,move語義不僅可以應用到構造函數,還可以應用到方法(如vector的push_back方法)。
理由2:通過使用類別屬性(type traits,如is_floating_point)和模板元編程(template metaprogramming,如enable_if template),你可以為某些特定的類型定制模版,這可以實現優化。
理由3:哈希表現在已經是標準實現的了,它提供更快速的插入、刪除和查找,這在處理大量數據時很有用。你現在可以隨便使用unordered_map, unordered_multimap, unordered_set 和unordered_multiset這幾種數據結構了。
提高效率
提高效率不僅都是在代碼性能方面,開發時間也是寶貴的。C++ 11可以讓你的代碼更短、更清晰、和更易于閱讀,這可以讓你的效率更高。
理由4:auto關鍵字可以自動推斷類型,所以下面的代碼:
vector<vector<MyType>>::const_iterator it = v.begin()現在可以很簡單的寫成:
auto it = v.cbegin()盡管有些人會說,它隱藏了類型信息,在我看來它利大于弊,因為它減少了視覺混換并展示了代碼的行為,還有它可以讓你我少打很多字!
理由5:Lambda表達式提供了一種方法來定義匿名方法對象(實際上是閉包),這是代碼更加線性和有規律可循。這在和STL算法結合使用時很方便:
bool is_fuel_level_safe()
{
return all_of(_tanks.begin(), _tanks.end(),
[this](Tank& t) { return t.fuel_level() > _min_fuel_level; });
}
理由6:新的智能指針(smart pointer)替換了有問題的auto_ptr,你可以不用擔心內存的釋放并移除相關釋放內存的代碼了。這讓代碼更清晰,并杜絕了內存泄露和查找內存泄露的時間。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 国产精品99精品 | 91精品国产一区二区三区动漫 | 国产精品久久久乱弄 | videos高潮 | 黄视频免费在线 | xvideos korean | 久久精品亚洲一区二区 | 久久99久久98精品免观看软件 | 亚洲乱搞 | 精品国产91久久久久久 | 欧美在线观看视频网站 | 久久成人国产精品入口 | 182tv成人福利视频免费看 | xxx18hd18hd日本 | 成人国产精品齐天大性 | 国产精品手机在线亚洲 | 国产 视频 一区二区 | 免费日本一区二区 | 免费国产wwwwwww网站 | 一区二区久久精品66国产精品 | 国产一级做a爰片在线看 | 久久成人福利 | 色婷婷a v | 日本a在线观看 | 一级黄色毛片a | 久久久久久久一区二区 | 成人在线高清视频 | 黄色网址免费入口 | 精品一区二区三区免费 | 色综合久久久久久 | 大学生a级毛片免费视频 | 宅男噜噜噜66国产免费观看 | 久国产精品视频 | 中文字幕网址 | 日韩激情在线视频 | 毛片视频播放 | 亚洲成人精品区 | 久久精品艹 | 亚洲va国产va | 欧美一级不卡视频 | av电影在线网站 |