C++學習的一點兒建議 by楊過

發信人: yangguo981 (神鵰俠侶), 信區: CS
標  題: C++學習的一點兒建議
發信站: 華南木棉BBS (Sat Jun 23 20:40:51 2007), 轉信

以下都是我個人學習感想不一定對,推薦的書也不保證是好書……
貼上來的主要目的是爲了引出玉……
大家隨便看看就好了。

大致可以按照以下順序學……
基本語法的熟悉、stl的瞭解、類概念、stl的使用、性能、底層實現、template

1:熟悉語法
錢能的那本書可以。講的簡單明瞭,主要的概念也都基本上涵蓋到了,缺點是沒有提到stl
。邊讀邊做後面的習題,讀完之後應該可以編寫一些小程序,計算某日某月星期幾、打印
平行四邊形之類的。這本書計算機是不是人手一本了,
呵呵。

2:stl的瞭解
stl是標準C++支持的庫,提供了容器、迭代器、算法等等。
瞭解如何使用這些東西,容器有數組的vector、集合的set、智能指針、棧和隊列的stack跟
queue等等;瞭解如何使用迭代器來訪問容器的元素
;瞭解stl提供的算法如sort、accumulate、make_heap等等的使用
thinking in C++ volumn 2說到了不少~,後面的習題選做部分就ok了,有一些比較麻煩~
有一本綠色封面的C++函數庫手冊可以拿來查詢,裏面列出了stl的容器、算法的使用方法,
還包括了math.h,stdlib.h等庫函數的介紹,不會的時候查一下很方便的~

函數庫手冊可以幾個人去買一本合用,反正也就是當字典查,thinking in C++圖書館有的
借,借不到中文就借英文的好了~不難讀

3:類概念
就是class,這部分其實跟軟件工程面向對象設計的關係更加接近,只不過是通過C++來表現

需要了解類的構造、析構、拷貝構造、賦值符等等,明白C++對象創建的方式,類的繼承、
虛函數之類的亂七八糟的東西。
effective and more effective c++、think in c++ volumn 2也都講到了不少,同時對1、
2也有很多很好玩的東西可以補充~
明白C++是如何描述面向對象思想的。

看設計模式,看不懂的話,可以先讀designed patterns explained,講的要相對容易理解
一點,然後回頭再讀。

個人感覺C++這部分的語法有點難懂,花多點時間熟悉吧,多多實踐一下最好了,呵呵。
同時也會了解對象構造的性能問題。

ec & mec網上中文英文都有,各種格式的都有,挑一個自己喜歡的排版看吧,圖書館也有的
,中文沒了就借英文吧,呵呵。
設計模式網上好像只有一個pdf版本的,看起來好累,圖書館有英文的可以借。中文版自己
買一個也可以,薄薄的也不貴,翻譯似乎也挺好的。
designed patterns explained英文版圖書館有借,網上有電子版。

4:stl的使用
第二步是對stl的瞭解,這一步主要明白各個容器可以提供怎樣的性能。同時也要注意對st
l的使用。舉個簡單例子:
不會再寫出
vector<int>  vi;
for(int i=0; i<99999; ++i) vi.push_back(i)這樣的的語句,取而代之的是
vector<int>  vi;
vi.reserve(99999)
for(int i=0; i<99999; ++i) vi.push_back(i)
對各個容器的具體實現有所瞭解,比如stack採用了deque做爲底層容器、deque跟vector的
區別、set可以保證提供lgN的存取時間等等。

對stl具體實現,可以看候捷的stl源碼剖析
而Effective STL這本書則着重於如何更好的使用stl

同時
effective and more effective c++
think in c++ volumn 2兩本書中不少地方也會有這些內容。
stl源碼剖析網上只有一部分,好惡心,要看的話只好去買了,sigh。
Effective STL中文英文版網上都可以找到。

5:性能
C++或許是以性能著稱的吧?如何在無法改進算法邏輯的情況下,寫出時空性能儘可能好的
程序?
看這本:Efficient C++ Performance Programming Techniques,對構造析構、虛函數、臨
時對象、引用計數等等都有介紹~
這本書似乎記得在圖書館二樓的隔間裏有英文版借(不保證有,或許我眼花了……),網上
有pdf可以搜到。

6:底層實現
主要是知道編譯器對你的代碼做了什麼手腳,以及C++是如何在內存中安排你的數據的。
看這本書:Inside the C++ Object Model(深度探索C++對象模型),看候捷翻譯的吧,呵
呵。網上中英文完整版都有~

7:template
這個跟泛型編程聯繫的比較緊密,stl本身就是一個完美的泛型編程的例子。
可以瞭解到原來template除了用來生成模板函數、模板類之外,還跟面向對象程序設計有很
大的關聯。
同時也可以對meta programming有一些瞭解。

C++ Templates-The Complete Guide:C++ templates的經典,前半部分說語法,後半部分
說設計。
這本書沒看完……看了半天看不懂放棄了555。
英文版網上有

最後推薦一個
C++ Gotchas-Avoiding Common Problems in Coding and Design,(C++陷阱),對一些常
見、不常見的程序設計陷阱做了一些介紹。挺不錯
的書,分成了99個小“故事”,看起來也不累~

圖書館有英文版~網上也有chm格式的~

--
※ 來源:. 華南木棉BBS bbs.gznet.edu.cn. [FROM: 202.38.215.7]
※ 修改:.yangguo981 於 Jun 23 20:44:52 修改本文.[FROM: 202.38.215.7]
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章