嚴(yán)以律己,寬以待人. 三思而后行. GMail/GTalk: yanglinbo#google.com; MSN/Email: tx7do#yahoo.com.cn; QQ: 3 0 3 3 9 6 9 2 0 .
第一種方案比較簡(jiǎn)單,你所做的只是將max_size改大一點(diǎn),比如:1000或者10000。但是,嚴(yán)格講這并不能最終解決問題,隱患仍然存在。假如有人足夠耐心,還是可以使你的這個(gè)經(jīng)過糾正后的程序崩潰的。此外,分配一個(gè)大數(shù)組,通常是在浪費(fèi)空間,因?yàn)榇蠖鄶?shù)情況下,數(shù)組中的一部分空間并沒有被利用。
再來(lái)看看第二種方案,通過在第一個(gè)for循環(huán)中加入一個(gè)限定條件,可以使問題得到解決。比如:for (int n = 0; cin >> num[n] && n < max_size; n ++); 但是這個(gè)方案同樣不甚理想,盡管不會(huì)使程序崩潰,但失去了靈活性,你無(wú)法輸入更多的數(shù)。
看來(lái)只有選擇第三種方案了。是的,你可以利用指針,以及動(dòng)態(tài)內(nèi)存分配妥善的解決上述問題,并且使程序具有良好的靈活性。這需要用到new,delete操作符,或者古老的malloc(),realloc()和free()函數(shù)。但是為此,你將犧牲程序的簡(jiǎn)潔性,使程序代碼陡增,代碼的處理邏輯也不再像原先看起來(lái)那么清晰了。一個(gè)compare函數(shù)或許就已經(jīng)令你不耐煩了,更何況要實(shí)現(xiàn)這些復(fù)雜的處理機(jī)制呢?很難保證你不會(huì)在處理這個(gè)問題的時(shí)候出錯(cuò),很多程序的bug往往就是這樣產(chǎn)生的。同時(shí),你還應(yīng)該感謝stdlib.h,它為你提供了qsort函數(shù),否則,你還需要自己實(shí)現(xiàn)排序算法。如果你用的是冒泡法排序,那效率就不會(huì)很理想?!?,問題真是越來(lái)越讓人頭疼了!下面再來(lái)看看STL后的代碼:
posted on 2006-04-24 09:39 楊粼波 閱讀(424) 評(píng)論(0) 編輯 收藏 引用 所屬分類: 學(xué)習(xí)筆記
Powered by: C++博客 Copyright © 楊粼波