C_and_CPP 板


LINE

原po gr網友在這裡問過三四次問題,全都沒有善用標題, 不是寫個「新手問題」,就是只有「[問題]」。 建議他以後要在標題中明確而扼要的點出問題的內容。 這是基本的網路禮儀,也是一種良好的思考訓練。 由於以下所寫,已經和原來的問題漸行漸遠,所以我 另立一個標題。 ※ 引述《gocpp (cpp)》之銘言: : 看情況啦。array 還是必要的,否則早就丟掉的。 : 以我的經驗來說,除非是寫短短的測試程式,或有極端效能的要求, : 一般是很少使用 array,更常用的是 vector。 : array 的確有很多不安全的地方,但我常使用 vector 的更重要理由 : 倒不是因為 array 不安全,而是我覺得它不太方便。 [中略] : 當然,這些都是取巧的小手段,不值一哂。不過若以比較高階的觀點來 : 看,直接操作 array 還是相當低階的動作,需要比較多的專注力,雖然 : 不能忽略這種精確的訓練,但大多時候,我希望 C++ 的編程風格,除了 : 講求 C 的精確和高效之外,也能像 Basic 一樣「簡單」。基於這個原 : 則,在 C++ 中我的確是傾向少用 array 的。如果寫 C 的話,就只好乖 : 一點,有什麼就用什麼。 array 與 vector 的取捨,有一點重要考量,就是元素個數 是否會在程式執行過程中變來變去。會變的話,通常都應該 捨 array 而取 vector。 C 時代,透過 malloc()/realloc() 來操作動態 array 的煩瑣而易出錯的做法,到了標準的 C++ 時代,就該用會自動幫我們搞定的 vector 來取代了。 至於若元素個數固定不變的話,若是想要趕快寫出一個正確 而可用的 C++ 程式,也是可以用 vector。我寫 ACM 題目的 淺薄經驗,一開始常常用 vector 寫,往往很快就可寫出一 個被接受的程式。可是當我一看到執行所耗費的時間,和別 人的速度一比,馬上 Orz... 於是又改用原始的 array 來做, 接著都會多花上許多時間來除錯,最後才弄得出一個正確而 跑得比較快的程式來。直接操作 array 真的是太低階而易出錯。 這也是為什麼一些 C++ 大老會勸人:若是本來的目標就是 C++ 的人,直接學 C++ 就對了,而不要先學 C,再來學 C++ 的部份 原因。而且也在 C++ 教學書很前面的地方,就開始適量的引進 C++ standard library 來讓學習者使用,以避免低階操作的種種 困擾。 : 在 C99 中,array 在初始化時,已經可以使用變量來初始它的規模,這使 : 得 array 的使用更加便利。 : 不過 C++ 並不支援這種功能,因為 C++ Standard 已經有 vector 等容器 : 了,可以不需要類似 C99 的 array。 就 C++ 來講,當然有了強大的 vector,就不會想在核心語言層次 對 array 動手腳了。然而,就 C 的立場,新增這種執行時期才決 定元素個數的 array 很可能的確有必要。Stroustrup 曾感慨說, 「C 標準」的增修未能和 C++ 密切配合,導致 C99 和 C++ 更難 相容了。他甚至希望有朝一日,C 和 C++ 能夠合一。我無知的想法 是覺得這個不太可能啦。C++ 真的太複雜,要宣稱 Our compiler is C++ standard-comformant 有多難呀!隨便一個硬體平台,要 有個 C compiler,相形之下,容易得太多了。一旦 C 和 C++ 合一, 到時還不是又要搞個 C++ subset 出來,讓一大堆 embedded system 來用。其實目前就有這種東西,只是很亂。C 和 C++ 合一,恐怕 會更亂吧 :-) --



※ 發信站: 批踢踢實業坊(ptt.cc)
※ 編輯: khoguan 來自: 220.130.208.168 (08/10 15:24)







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:Boy-Girl站內搜尋

TOP