java - c++學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)應(yīng)不應(yīng)該用stl實(shí)現(xiàn)?
問題描述
數(shù)據(jù)結(jié)構(gòu)初學(xué)者,之前有看過大話數(shù)據(jù)結(jié)構(gòu)的線性表,棧,隊(duì)列的內(nèi)容,c實(shí)現(xiàn)的。學(xué)校這學(xué)期開數(shù)據(jù)結(jié)構(gòu)c++,我直接看國外的教材,里面都是stl實(shí)現(xiàn)的,比如線性表數(shù)組描述刪除一個(gè)元素是移動(dòng)元素直接用copy,怎么移動(dòng)的過程也沒有,因?yàn)橹傲私恻c(diǎn)數(shù)據(jù)結(jié)構(gòu)還能理解,但越往后面擔(dān)心只會(huì)記語法而不理解了,這本書關(guān)于數(shù)據(jù)結(jié)構(gòu)的應(yīng)用寫的很詳細(xì)。應(yīng)該邊看這本書,邊看學(xué)校的教材(和大話一樣挺通俗的)。還是直接看這本書作為正式入門數(shù)據(jù)結(jié)構(gòu)的教材?
挺厚一本,應(yīng)用偏多
一大堆,拋出異常和stl的語法
問題解答
回答1:要習(xí)慣使用STL,因?yàn)槟悻F(xiàn)在學(xué)的是數(shù)據(jù)結(jié)構(gòu),不是學(xué)習(xí)STL源碼,你的目標(biāo)應(yīng)該是搞懂?dāng)?shù)據(jù)結(jié)構(gòu),所以不要拘泥于這些細(xì)節(jié),否則會(huì)花費(fèi)掉你大量的時(shí)間.
你可以把數(shù)據(jù)結(jié)構(gòu)看完之后,再找一本STL源碼分析的書來看.
回答2:沒關(guān)系,這只是依據(jù)語言特性簡化了操作。如果實(shí)在擔(dān)心,可以再看看用C語言實(shí)現(xiàn)的。
回答3:您好, 我也是初學(xué)者. 雖然我自己學(xué)數(shù)據(jù)結(jié)構(gòu)是先用c++(without stl)來學(xué)數(shù)據(jù)結(jié)構(gòu), 再用純c學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)的, 不過我覺得其實(shí)沒有絕對(duì)的優(yōu)劣之分, 隱藏細(xì)節(jié)可以更專注于算法的表示, 顯示細(xì)節(jié)可以更深刻的理解其具體實(shí)現(xiàn), 孰優(yōu)孰劣, 真的很難界定, 就像拋一枚硬幣, 其實(shí)哪面朝上都無所謂, 有的大神是自頂向下學(xué)習(xí), 有的大神是自底向上學(xué)習(xí), 我覺得由此得出的結(jié)論是都可以通往終點(diǎn), 與其糾結(jié)這些, 不如選定一種立即著手開始學(xué)起來. 猶豫才是最浪費(fèi)時(shí)間的. 我個(gè)人覺得直接去計(jì)蒜客學(xué)知識(shí)點(diǎn)然后刷對(duì)應(yīng)的數(shù)據(jù)結(jié)構(gòu)題比較合適入門, 題主的那本書我也有...
回答4:個(gè)人認(rèn)為:有足夠時(shí)間學(xué)習(xí)的話,自然是先能夠自己實(shí)現(xiàn)再使用STL比較好咯.....
回答5:使用stl實(shí)現(xiàn)肯定是要學(xué)的,畢竟使用stl可以加快開發(fā)效率。對(duì)于初學(xué)者建議不純使用stl,stl不是萬能的,最終還是要理解數(shù)據(jù)結(jié)構(gòu)內(nèi)部原理,這樣使用stl實(shí)現(xiàn)起來才能更加得心應(yīng)手。另外對(duì)于學(xué)校課程還是不用的好,不然提交作業(yè)只是包含了相關(guān)頭文件,幾乎沒有自己的實(shí)現(xiàn)。也可以用簡單的stl堆砌復(fù)雜的數(shù)據(jù)結(jié)構(gòu)。
相關(guān)文章:
1. javascript - js中遞歸與for循環(huán)同時(shí)發(fā)生的時(shí)候,代碼的執(zhí)行順序是怎樣的?2. python - linux怎么在每天的凌晨2點(diǎn)執(zhí)行一次這個(gè)log.py文件3. php如何獲取訪問者路由器的mac地址4. android - 鍵盤遮擋RecyclerView5. 如何分別在Windows下用Winform項(xiàng)模板+C#,在MacOSX下用Cocos Application項(xiàng)目模板+Objective-C實(shí)現(xiàn)一個(gè)制作游戲的空的黑窗口?6. javascript - jQuery each 方法第三個(gè)參數(shù)args 如何解釋?7. javascript - 在 vue里面用import引入js文件,結(jié)果為undefined8. java - new + 類名,一定需要申明一個(gè)對(duì)象嗎?9. javascript - vue-resource中如何設(shè)置全局的timeout?10. 小程序怎么加外鏈,語句怎么寫!求救新手,開文檔沒發(fā)現(xiàn)
