Ⅰ 想學好c++語言有什麼辦法例如看什麼書學會那些軟體
C++學習之路
(一)語言入門:
《C++ Primer》
最新版本:第三版(第四版國外已上架,國內一些網上書店也在預訂中)
適合有豐富C經驗,缺乏C++經驗的。不過我個人一直認為此書帶著過於強烈的C語言的痕跡,對於C++的學習未必是好事。
《The C++ Programming Language》/《C++程序設計語言》
最新版本:第三版特別版
簡稱TC++PL,有其他語言的豐富經驗的。(也有人簡稱之為「TCPL」,但需與另一本《The C Programmer Language》區分開來)
《Essential C++》
《Accelerated C++》
這兩本薄一些,都是不錯的選擇。《Accelerated C++》本人沒有讀過,從各方面的評價來看,完全值得推薦。
以上幾本書都有相應的中文版,而且翻譯的質量都不錯。上面的書未必都需要讀一遍,但無論如何,TC++PL是應該閱讀的。
(二)進階A:
這個路線側重於語言本身
《Effective C++》
最新版本:第二版(第三版國外已上架,國內一些網上書店也在預訂中)
簡稱EC。C++程序員必讀!很多時候,我們說C++聖經不是指TC++PL,而是這一本。《The Pragmatic Programmer》一書中寫到:「一旦你發現自己要參與C++項目的開發,趕快跑(不要走)到書店去購買Scott Mayer的《Effective C++》,可能還要《More Effective C++》」。
《C++ Coding Standards: 101 Rules, Guidelines, and Best Practices》/《C++ 編程規范》
個人認為此書應為C++程序員必備的案頭書。幾乎Effective系列和Exceptional系列都在這里得到了總結。最新的模版、異常的業界經驗都在這里的到了體現。可能的唯一缺陷就是對一個新手而言,關於「為什麼這么做」的問題,解釋的不夠。
我的看法是:如果你不理解其中的條款,記憶,並且照做;如果你理解其中的條款,我猜你一定會同意書中的觀點。我認為這本書中的內容至少在2009年以前都不會過時,人們將廣為傳誦它制定的101條戒律。
還不知道他的簡稱,也許「101」會成為一個候選者?
提到《Effective C++》,那麼另外三本書一一浮出水面:
《More Effective C++》
《Exceptional C++》
《More Exceptional C++》。
新書《Exceptional C++ Style》也是值得一看的好書。
上述幾本書,一本也不應該放過。
個人建議上述書籍按順序閱讀。並且,在將來反復閱讀這幾本書。
(三)進階B:
這個路線側重於程序庫。
《The C++ Standard Library》/《C++標准程序庫—自修教程與參考手冊》
聽說過STL嗎?這本書會教你最基本的,也是最重要的STL的使用。這本書,應該是必讀的。
《Effective STL》
會使用STL還不夠,還必須知道什麼時候選擇什麼STL組件,這是STL使用的必讀書。
《Generic Programming and the STL: Using and Extending the C++ Standard Template Library》/《泛型編程與STL》。
這本書理論性較強,但是真的很嚴謹,而且並不是非常難懂。理解其中對於Concept的解釋,將是非常重要的。
《C++ STL》
這不是講述使用程序庫的,而是講述程序庫實現原理的。腸胃不好的,需要慢慢吸收。
這個路線的書,仍然是建議按順序閱讀。
進階A、進階B兩個路線應該是可以並行的。
其他進階參考書
提出這些參考書,只是避免爭議,也為開闊視野,筆者並不曾完全讀過所有的。
《Thinking in C++》/《C++編程思想》
這本書及其中文版傳言好壞都有,沒有認真看過,不做評價,如果確有興趣,不妨嘗試一下該書。
以下幾本書基本上涉及的都是語言本身,大體上可以按照以下的順序閱讀。
《C++必知必會》
如果早一年,這本書將是重量級的,然而它被101和《Exceptional C++ Style》蓋過一頭。
《C++ Gotchas: Avoiding Common Problems in Coding and Design》/《C++程序設計陷阱》
這又是一本我未曾讀過,而且廣受好評的書。
《STL 源碼剖析》
這本書我剛到手,就被人"借"走,以至於到現在也沒有看過。看過這本書的朋友,可以給一個合適的評價。
高級:
《The Design and Evolution of C++》/《C++語方的設計和演化》
簡稱D&E,內容並不艱深,Bjarne的書,僅此,就值得一讀。
前段時間,互動網曾8塊一本(人民幣)賤賣此書,現在好像沒了。
《Inside The C++ Object Model》/《深度探索C++對象模型》
C程序員讀後一定會覺得C++原來並不神秘。
《C++ Template》
在閱讀STL、Boost或者Loki的源代碼之前,請仔細閱讀本書,它可以減輕一些閱讀的煩惱。這本書是討論C++模版的權威。
《Modern C++ Design Generic Programming and Design Patterns Applied》/《C++設計新思維——泛型編程與設計模式之應用》
簡稱MCD。在閱讀MCD之前,建議先閱讀一下《C++ Template》。
《對象揭秘:Java、Eiffel和C++》
你對C++不滿嗎?這本書可以部分地幫你完成抱怨的目標。也許它還可以讓你不迷信C++。
最後,一份C++標准文檔也是應該加以咀嚼的。
還有一些書籍,並不能簡單的歸於C++,也難以在純粹的書本學習中加以掌握。《Design Patterns》/《設計模式》一書就歸於此類。
所有上述的書籍,要麼談論C++語言本身,要麼談論STL的,要麼兼而有之(當然嚴格講STL也是C++語言非常重要的一部分)。偶爾,某些書中條目也會涉及實際工程。這些書並不是C++軟體開發的全部,但是他們很重要。閱讀這些書,未必需要化費太多的精力,有時候是會困難,但也有時候會很快速。
最後,編程語言並非計算機科學技術的全部,尤其對於在校的學生來說,打好基礎、開闊視野都是非常重要的。
================================================================
c++書籍推薦
第一篇
一些同學問我,如何學好C++,我沒有別的辦法給你們,唯一的辦法就是讀書,讀大量的書,就可以解決。要把C++作為日常語言,而不是一種程序語言,這樣就好辦了。
有人又要問我,那麼我應該讀什麼書才好?沒有時間怎麼辦?
我只能對你們說,沒時間的話,就別學C++了,做你們喜歡做的事。生活中沒有C++,也同樣美好。
如果你准備學,一定要學好,那麼我開個書單,應該問題不是甚大。
首先肯定要讀一讀Bjarne Stroustrup的The Design and Evolution of C++,了解一下這個語言的歷史。接下來就可以看別的書了,但要不停地回頭看這本書,看到你不斷地學到的新技術是怎麼樣一點點地被接納到這個語言中去的。
第一本書因人而異,基礎好一些的,可以看Stanley B. Lippman的C++ Primer,這本書非常地巨大,你打星號的部分可以不要看。基礎不太好的,可以看Stanley B.Lippman的Essential C++,這本書份量要輕得多,不過四個C++的范型都講了,而且講得非常清楚。
第二本應該停止技術層面的東西,靜下心來看看Pike和Kernighan的The Practiceof Programming,好好地整理一下,在程序設計中應該有哪些注意的事項。這本非常薄的booklet,可以說是程序員必讀的指南。
第三本書,就應該是Bruce Eckel寫的、候捷譯的Thinking in C++,這本書每過半年我就要重讀一遍。可以說每一章都是寫得發人深省的,這本書讓我感覺到了技術運用的非常高的境界,但是語言非常平實,只要認真地讀,即使基礎不行,也一定可以懂。我在教課的時候,就是用這本書(面對的學生是零基礎)。
要更上一層的話,就要慢一步,先要把握C++設計習慣的良好。這是Scott Meyers的Effective C++和More Effective C++帶給我們的無盡收益。我More Effective C++買不起,只好花了10塊錢復印裝訂了一本"線裝本",看起來像葵花寶典(;-))。這兩本書是真正的經典,作者對C++的純熟,使得語言的風格讀起來簡直是如飴甘甜,就像他站在對面在講課。我手中有這兩本書的原版CD,如果有興趣,可以發E-mail到[email protected]或在飲水思源投條兒給gaobo索要,只要您提供光碟我就給免費燒。如果你已經深刻地理解了Effective C++和More Effective C++,那你可以發現,你在眾人中已經是雞群之鶴。可以指導項目運作了,可以編寫一切你想做的程序了,可以指出別人看起來不錯的代碼的大小問題了。如果你能一眼看出有人的代碼是對應於"條款27"或"條款M6",那你可真是讓本人刮目了。
我已經講了,如果要寫程序,EC++和MEC++的境界已經足以使你自如應付,可是如果你還不滿足,想關注一些理論層面的問題,或是想看看實現的代碼,你就不應該錯過這幾本好極了的書。我是說Herb Sutter的Exceptional C++和More Exceptional C++,這兩本書的難度是非常大的,我對每一條的閱讀筆記都是十多頁。特別是泛型程序設計的部分,這兩本書旁徵博引,極盡深入探討之能事,每每看懂一條,都抹汗一次,大感酣暢淋漓;還有侯捷的STL源碼剖析,以實際的例子一點點地講解一個STL是怎麼樣實現的,我是剛開始讀,不發表評論;而Stanley B. Lippman,Cfront的實現者之一,執筆寫出Inside the C++ Object Model,我只有一個字,就是基本帥呆了。我從中了解了無數的編譯器解釋源代碼的細節,以及記憶體分配的細節,呵呵,這些都知道了,我還怕什麼呢?最近得到了另一Cfront實現者、C++標准委員會Koenig的C++沉思錄,看起來非常不錯,這里也推薦給大家,但我也沒看完,亦無發言權。
最後最後,你們,未來的C++理論家們,可要記住,Bjarne Stroustrup的The C++ Programming Language無論如何也應該讀個四五遍!這是一切C++的書本的源泉。如果還覺得不夠,就向C++標准委員會訂購一本C++標准。
一切中國大陸作者的書,一概不要看(包括我的)。一切VC++或講特定的編譯器的書,一概不要看。如果需要補C語言的課,買一本非常小的K&R的The C Programming Language足矣,其它的書一概不要看。不要先學C,再學C++,而要直接學C++。你不是先學古文,再學白話的,對不對?所以相信我,直接來更容易。
以上文字,皆為原創,本人願意為每個字負責。
第二篇
好久未來C板了,原因這段時間一直在研究兩本書,看得自己不敢多說一句話。
1、《Effective STL》
訂購:http://www.cnforyou.com/query/bookdetail.asp?viBookCode=8537
作者:Scott Meyers
出版社:中國電力出版社
一開始欺負這本書比較薄,想快點看完,但不久就發現自己已經翻不動了。直到看完最後一個字,才發現一個基本的事實:薄的不是這本書,而是自己的見識。
有關STL的書也讀了不少,正如讀《Effective C++》以前,有關C++的書也讀了不少。Meyers的書總是給人一種脫胎換骨的提升感覺,他總能在大家以為老生常談的地方挖出意想不到的新意,並指出一些一般人習以為常的東西其實存在種種危機,或是在一些看來完全等價的選擇中,為特定的場合選擇最有效的(Most Effective)那一種。而且他的切入口總是讓人看得懂的(不像Stroustrup的書,
第一句話就要琢磨半天),但是他總是會選擇幾個拓展點,並把它們分析得淋漓盡致,這時候就需要一段代碼一段代碼甚至是語句粒度地閱讀了——當然,最後總是看得懂,這和讀者的閱讀程度總是正比,這會給人極大的成就感。可以說,在STL
實踐的書籍,無書可出其右(當然在STL實作方面,我還是要向大家推薦侯捷的《STL源碼剖析》)。
讀完這本書後,和Pascal就產生明顯的距離感了。這里我仍然要說:請熱愛
Delphi!我還是更願意寫「var s:set of char;」而不是
「set <char*, less<char*>, allocator<char*> > s」,;-)。
2、《Modern C++ Design》
訂購(中文):http://www.cnforyou.com/query/bookdetail.asp?viBookCode=8184
訂購(影印):http://www.cnforyou.com/query/bookdetail.asp?viBookCode=8319
作者:Andrei Alexandrescu
譯者:侯捷、於春景
出版社:華中科技大學出版社(中文)
中國電力出版社(影印)
讀完這本書的第一頁,我就知道自己放不下它了,但我也知道,我的苦難經歷又要多上一筆了。用C++實作設計模式,已經是骨灰級的難度,但這本書明顯還在講一個template的對象模型的問題,這在我讀《Inside the C++ Object Model》時是屢攻不下的難點。不過,出乎意料的是這本書居然使我具有一些概念了,而且動手寫出了一個SmartPointer。
這本書我還遠不能說我讀懂了,但是確乎是讀完了。如果你還沒有讀過對象模型和設計模式的書,我認為需要讀一讀。否則,直接看這本書根本就是受罪。最近,有一些朋友也注意到設計模式的重要性了,可能從明年起我在《電腦報》上要發表一些文章,屆時請朋友們指教吧。
另外就是Effective C++點評繼續寫,我現在覺得更惶恐,但是信心也更足了。
Ⅱ stl源碼剖析 為什麼要使用仿函數
STL(standard template libary),標准模板庫。
這是C++標準的一部分。關於這個庫有不少歷史可以說,侯捷的《STL源碼剖析》講了不少。STL有好幾種不同的實現,微軟也有自己的實現。
關於使用,比如你用了下面的語句:
#include <vector>
就是使用了標准模板庫里的 vector.
然後你這樣聲明向量:
vector<int> a; //向量a包含的元素是int型的
vector<double> b; //向量b包含的元素是double型的
你可以查找對應的頭文件,它們都是以源碼形式出現的,不過裡面的符號定義的讓人眼花繚亂,還是找書看比較好。
標准模板庫包含了數據結構和演算法等方面的內容,比較復雜,學習之前要有十足下信心。
Ⅲ stl源碼解析用什麼語言實現的
A #temp2
JC A01
A01: L #HW_Q_Addr
SLD 3
LAR1
L #Temp1
T PQW [AR1,P#0.0]
L #PZD_Speed
T PQW [AR1,P#2.0]
L #PZD_Ramp
T PQW [AR1,P#4.0]
BEU
Ⅳ 【高分】《STL源碼剖析》中的代碼
1. 他給的那份代碼好像也編譯不了吧;不知道你說的想編譯看下是什麼意思。
其實用別的實現也可以看效果的,比如 stlport之類的。
2. 他所使用的就是 sgi stl ,這個應該這些年不太有變化
3. 你找份新的也可以的;我記得看過幾乎沒什麼變化的。
4. 在侯捷的網站上有;實在不行,在csdn上找找吧,應該也有的。
5. http://www.sgi.com/tech/stl/download.html
直接到這里下載一個V2.X的版本,就可以了。其剖析的也是2.x的版本
Ⅳ STL源碼剖析怎麼樣
STL很龐大,本書很好地萃取出了STL的主要內容(不考慮異常,多線程等相關代碼),並加以詳略得宜的剖析,讓人覺得STL原來如此簡單。因為是STL組件本身就有很多類似的地方,所以侯先生的行文大量復用之前文字(有時完全粘貼,有時稍作改動),讀起來像讀優秀代碼一般痛快。
Ⅵ 《STL源碼剖析》:無名形參
1、函數在聲明時就已經確定其格式(可能因擴展、重載或其它原因無法修改修改其原型);
2、函數體內不需要用到某形參,可以省略該形參名;
3、形參類型不能省略,一旦省略,那就跟原型不一致了
4、省略不需要用到的形參是為了避免嚴格編譯時,編譯器對沒有使用的變數給出警告信息
5、...
Ⅶ 初學者可以看得懂《STL源碼剖析》嗎
《STL源碼剖析》不是講怎麼樣使用STL和STL技巧的,是關於STL核心代碼的剖析,是面向有豐富經驗的STL程序員來補充和更好的理解STL底層核心機制,初學者看這本書的話基本上是一頭霧水,建議先從基礎學起,C++標准程序庫 和C++stl是比較好的入門且使用的書籍,以後有了一定的STL經驗,再去研究STL源碼剖析,相信那時候你就會有了另一番對STL的領悟。
Ⅷ 學習stl源碼剖析前需要先看哪些東西
《STL源碼剖析》不是講怎麼樣使用STL和STL技巧的,是關於STL核心代碼的剖析,是面向有豐富經驗的STL程序員來補充和更好的理解STL底層核心機制,初學者看這本書的話基本上是一頭霧水,建議先從基礎學起,C++標准程序庫 和C++stl是比較好的入門且使用的書籍,以後有了一定的STL經驗,再去研究STL源碼剖析,相信那時候你就會有了另一番對STL的領悟。