作者:dawnmist
鏈接:https://www.zhihu.com/question/32087709/answer/54936403
來源:知乎
著作權歸作者所有,轉載請聯系作者獲得授權。
鏈接:https://www.zhihu.com/question/32087709/answer/54936403
來源:知乎
著作權歸作者所有,轉載請聯系作者獲得授權。
個人經驗,C++ primer 第一次可以跳着看。關鍵是要盡快用起來,在使用中熟練,而不是在細節中迷失。
以C++ Primer第五版為例,第一遍讀的時候:
Part1也就是前七章,除了6.6,6.7節,都要通讀。尤其是第三章初步介紹了vector和string,簡直就是新手福音,搞定這兩個容器就能寫一些簡單的程序。
Part2基本就是數據結構和算法,如果有基礎讀起來很輕松。
9,11兩章介紹的容器,以及12.1節的智能指針要通讀。多用智能指針和容器,遠離segment fault. 第10章里的泛型算法可以慢慢讀,讀完以后可以寫出高逼格的函數式風格C++。12.2節講了怎么用new和delete分配空間,題主作為新手,知道這種寫法就行,寫程序時盡量用容器代替原始數組,尤其是代碼里最好不要有delete。
Part3是塊硬骨頭,標題就是Tools for Class Authors. 作為一個"class user",有些部分第一次是可以略過的。
13章很重要,要細讀。初始化,復制,賦值,右值引用是C++里很微妙很重要的部分,別的語言對於這些概念很少有區分得這么細的。這一章不但要精讀,還要完全掌握。
14章的操作符重載第一次可以觀其大略;14.9節第一次可以跳過。
15章講OOP,重要性不言而喻。如果之前一點概念都沒有,學起來會覺得比較抽象。網上關於OOP有很多通俗有趣的文章,可以一起看看。
16章講泛型編程,第一次讀16.1節,掌握最基本的函數模板和類模板就行了。
Part4就更高檔了,很多內容第一次就算啃下來,長久不用又忘了。第一次讀推薦把18.2節讀懂,命名空間簡單易用效果好。別的內容可以觀其大略,用時再看。17.1節的tuple是個有趣的東東,可以讀一讀。17.3節的正則表達式和17.4節的隨機數也許有用,也可以讀一讀。如果需要讀寫文件,要讀一下17.5.2節的raw I/O和17.5.3節的random I/O。
最后給題主的建議是,寫C++,要盡量避免C的寫法。用static_cast而不是括號轉換符;用vector而不是C里面的數組;用string而不是char *;用智能指針而不是原始指針。當然I/O是個例外,printf()還是比cout好用的;轉換數字和字符串時sprintf()也比stringstream快
以C++ Primer第五版為例,第一遍讀的時候:
Part1也就是前七章,除了6.6,6.7節,都要通讀。尤其是第三章初步介紹了vector和string,簡直就是新手福音,搞定這兩個容器就能寫一些簡單的程序。
Part2基本就是數據結構和算法,如果有基礎讀起來很輕松。
9,11兩章介紹的容器,以及12.1節的智能指針要通讀。多用智能指針和容器,遠離segment fault. 第10章里的泛型算法可以慢慢讀,讀完以后可以寫出高逼格的函數式風格C++。12.2節講了怎么用new和delete分配空間,題主作為新手,知道這種寫法就行,寫程序時盡量用容器代替原始數組,尤其是代碼里最好不要有delete。
Part3是塊硬骨頭,標題就是Tools for Class Authors. 作為一個"class user",有些部分第一次是可以略過的。
13章很重要,要細讀。初始化,復制,賦值,右值引用是C++里很微妙很重要的部分,別的語言對於這些概念很少有區分得這么細的。這一章不但要精讀,還要完全掌握。
14章的操作符重載第一次可以觀其大略;14.9節第一次可以跳過。
15章講OOP,重要性不言而喻。如果之前一點概念都沒有,學起來會覺得比較抽象。網上關於OOP有很多通俗有趣的文章,可以一起看看。
16章講泛型編程,第一次讀16.1節,掌握最基本的函數模板和類模板就行了。
Part4就更高檔了,很多內容第一次就算啃下來,長久不用又忘了。第一次讀推薦把18.2節讀懂,命名空間簡單易用效果好。別的內容可以觀其大略,用時再看。17.1節的tuple是個有趣的東東,可以讀一讀。17.3節的正則表達式和17.4節的隨機數也許有用,也可以讀一讀。如果需要讀寫文件,要讀一下17.5.2節的raw I/O和17.5.3節的random I/O。
最后給題主的建議是,寫C++,要盡量避免C的寫法。用static_cast而不是括號轉換符;用vector而不是C里面的數組;用string而不是char *;用智能指針而不是原始指針。當然I/O是個例外,printf()還是比cout好用的;轉換數字和字符串時sprintf()也比stringstream快
作者:匿名用戶
鏈接:https://www.zhihu.com/question/32087709/answer/55497335
來源:知乎
著作權歸作者所有,轉載請聯系作者獲得授權。
鏈接:https://www.zhihu.com/question/32087709/answer/55497335
來源:知乎
著作權歸作者所有,轉載請聯系作者獲得授權。
對於工程性、技術性的知識,沒有實踐的感性認識作為基礎,讀也讀不懂。那么問題來了,沒有實踐就沒法讀懂,沒法讀懂自然也就沒法去做正確且高質量的實踐,問題似乎進入了一個死循環。
學習東西最怕不知道學的東西有什么用處,只要是這樣,多半會半途而廢。而個問題的深層次原因就是上面說的。
要想打破這個死循環,你唯一能做的就是調整心態,然后讀一點就實踐一點,一點一點的往前挪。這是學習任何新知識所必需的“痛苦”經歷。在這里我給你幾點建議,幫助你盡可能的減輕“痛苦”,讓你起碼能有一個開始:
1.第一遍要通讀,而且可以不求甚解,但必須讀的有速度,不要在不懂的地方過多的停留,不要試圖在第一遍的時候就搞懂所有細節。假如讀到后面需要前面的知識,但是又忘記了,可回頭看,也可不回看。很多人想用c++ primer學習c++,但是第一遍都沒讀完就放棄了。
2.接上條。讀第一遍的目的是讓你知道c++都有什么東西,先混個臉熟,等日后見到一些比較高級的特性心里不會發慌。
3.調整心態,不要急於求成,除非你已經擁有了豐富的編程經驗,否則一個假期不可能到達熟練掌握c++的程度。要認清這一點,遇到挫折了不要懷疑自己,大家都是這么過來的。
4.c++不是一門可以邊學邊干的語言,里面坑很多,要是一知半解就去用,很可能掉坑里了還不知道。
5.如果覺得c++ primer太厚,可以讀讀作者寫的另外一本: Essential C++ (豆瓣)。
6.關於書上的習題,第一遍看的時候可以不做。原因是做習題就會陷入到細節中,學任何東西過早的陷入細節都不是好事情。凡是過早陷入細節的,很少有能堅持到最后的。
學習東西最怕不知道學的東西有什么用處,只要是這樣,多半會半途而廢。而個問題的深層次原因就是上面說的。
要想打破這個死循環,你唯一能做的就是調整心態,然后讀一點就實踐一點,一點一點的往前挪。這是學習任何新知識所必需的“痛苦”經歷。在這里我給你幾點建議,幫助你盡可能的減輕“痛苦”,讓你起碼能有一個開始:
1.第一遍要通讀,而且可以不求甚解,但必須讀的有速度,不要在不懂的地方過多的停留,不要試圖在第一遍的時候就搞懂所有細節。假如讀到后面需要前面的知識,但是又忘記了,可回頭看,也可不回看。很多人想用c++ primer學習c++,但是第一遍都沒讀完就放棄了。
2.接上條。讀第一遍的目的是讓你知道c++都有什么東西,先混個臉熟,等日后見到一些比較高級的特性心里不會發慌。
3.調整心態,不要急於求成,除非你已經擁有了豐富的編程經驗,否則一個假期不可能到達熟練掌握c++的程度。要認清這一點,遇到挫折了不要懷疑自己,大家都是這么過來的。
4.c++不是一門可以邊學邊干的語言,里面坑很多,要是一知半解就去用,很可能掉坑里了還不知道。
5.如果覺得c++ primer太厚,可以讀讀作者寫的另外一本: Essential C++ (豆瓣)。
6.關於書上的習題,第一遍看的時候可以不做。原因是做習題就會陷入到細節中,學任何東西過早的陷入細節都不是好事情。凡是過早陷入細節的,很少有能堅持到最后的。