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...