C 11的新功能特性對Boost庫影響

2021-08-13 14:52:57 字數 2610 閱讀 7947

boost程式庫探秘——深度解析c++準標準庫》之試讀

前一陣子還看到一篇文章,說c#要重蹈c++的覆轍,這裡說的c++的覆轍是什麼呢?是指c++語言過於臃腫的功能特性,導致學習人員的流失。文章說,語言最後的威力是「開發軟體」,而不是「比拼新特性」

在大學中,c++算是比較難學的語言。有些學校試圖直接讓學生們學習c++,結果效果不怎麼好。這次,c++11又新增了大量新特性,如lambda,auto等,把c++弄的像動態語言一樣。

新增了那麼多新特性,而為了照顧使用者的習慣和已有的**。又不能去除一些舊的特性,這樣導致了c++越來越臃腫和複雜。記得在**看過,好像是塞伯斯塔的程式語言一書中說的吧:程式語言發展的乙個重要的特性就是易學性。而語言的簡潔程度在很大程度上影響了語言的易學性。況且在不拋棄老的特性的情況下,又新增了新的特性。會大大增加語言的學習成本。

令人奇怪的是,c++primer英文版第五版有1225頁,而包含c++11的第六版c++primer一書仍然只有1200頁。並沒有增加,反而減少了25頁(第六版的c++primer我沒有讀,不能評價其內容)。在未來,簡潔且同樣高效的類c語言——go語言或許會對臃腫的c++發起挑戰。

當然,這只是我的看法,現在還說不清這種大雜燴會對c++的未來產生什麼影響。

閱讀c++的**,一直是一件痛苦的事,尤其是stl相關的。c++11的一些新特性,讓c++**的可讀性大大增強。如自動型別推導auto,這在基本型別的使用時還沒發現其優點,但是在使用模板時,auto就可以大大簡化**。引用乙個例子:vector::const_iteratorci = vi.begin();,在引入auto後,就可以簡化成auto ci = vi.begin();

此外,還有一些其他的特性值得關注,這裡就先不一一細數了。

這本書是關於boost庫的,c++11的出現,勢必會對boost現有的一些庫產生影響。為了方便大家,下面就列出一些c++11對boost庫的影響列表(這個列表是網上收集整理翻譯來的,可能不準確或不全,請大家見諒):

原boost庫

c++11

新的特性或庫

boost_foreach

基於range

的for

迴圈替代。(序列for

迴圈,有點像python

的for

迴圈了)

functional/forward

新的標準庫std::forward

boost_lambda

lambda

表示式min-max

新的標準庫std::min|max、std::minmax_element

move

右值引用

ratio

新的標準庫std::ratio

staticasser

tstatic_assert

thread

typeof

auto, decltype

,推斷變數或表示式的資料型別

valueinitialized

list-initialization

array

新的標準庫std::array

bind

新的標準庫std::bind

enableif

新的標準庫std::enable_if

function

新的標準庫std::function

memberfunction

新的標準庫std::mem_fn

random

ref新的標準庫std::ref、std::cref

regex

c++11

的regex

resultof

新的標準庫std::result_of

smartptr

新的標準庫std::unique_ptr、std::shared_ptr、std::weak_ptr

新的標準庫std::swap

tuple

新的標準庫std::tuple

typetraits

unordered、

boost

庫是非常強大的,但對初學者(這裡的初學者並不是真正意義上的c++語言初學者,而是已經了解c++基本語法的初學者)來說,當務之急是了解

c++11

的標準庫內容。能用標準庫的,盡量用標準庫。在熟練以後,使用這本書去查詢自己需要的庫。不要一頭紮進

boost

的海洋,那樣會讓人迷茫而打退堂鼓。

通過閱讀本書的樣章,會發現這是一本參考書。看到這裡,讀者或許會說,這不是廢話嗎,我也知道這是參考書。但我真遇到一些人,將這一類書拿來當教科書使用。或許真有這樣的人適合這種學習方法的。不過我建議大家還是把這本書作為電腦旁的參考書使用。您會發現,這本書將在你需要的時候節省您寶貴的時間。

本書實際上是作者寫的第二版介紹boost庫的書。所以在樣章中介紹的boost

庫內容,已經考慮到了c++11

的新特性,如在第四章介紹hash

時,書中提到了c++tr1

草案。昨天的tr1

草案,大部分已經變成現在的c++11

的特性。所以使用本書,不必擔心本書是否「過時」的問題。

羅馬不是一天建成的,boost

庫也不是一兩個月可以了解清楚的。相信在這本書的幫助下,再加上平時的實踐,您對boost

庫會有乙個更深刻的了解。

C 11增加的功能特性

現代c 這個術語在c 11發布後變得非常流行。這是什麼意思?首先,現代c 是一組模式和習語,旨在消除的缺點美好的 c類 如此多的c 程式設計師使用,特別是如果他們開始在c,c 程式設計11看起來更簡潔易懂的方式,這是非常重要的。c 11增加的功能特性包括 自動型別推斷 lambdas表示式 c 11...

c 11常用特性

目錄 一 atomic 1 std atomic flag 2 std atomic 二 std thread 三 std condition variable 四 右值引用 五 std function std bind 六 lambda表示式 atomic flag 一種簡單的原子布林型別,只支...

c 11 特性學習

auto 含義改變,現為自動型別推斷 register c 11之前為建議使用cpu暫存器儲存變數,現在幾乎沒有意義 include include include include include include using namespace std initial intsum initiali...