[問題] array, pointer V.S. vector, Iterator

看板C_and_CPP作者 (無良記者)時間11年前 (2013/02/07 23:27), 編輯推噓11(11020)
留言31則, 13人參與, 最新討論串1/2 (看更多)
我是一個自學C++還不滿一個月的新手 最近在板友的建議之下,去博客來訂了一本《C++ Primer 4/e》中文版 (雖然有不少板友建議直接買最新的5/e,但最後想說還是以中文優先......) 今天拿到後,為了寫題目需要而翻「陣列和指標」一章起來看 結果看了幾頁,反而更混亂了 因為作者對於array 和pointer 的態度幾乎是「深惡痛絕」...... 一直不斷的強調「盡量不要用到array 和pointer」,尤其「不要用C-Style 字串」 並反覆建議讀者以vector 代替array、string 代替C-Style 字串、Iterator 代替pointer 想請問版上的大家,array 和pointer 真的有如此不堪嗎0.0? 如果真的如此,那我大概要再把目前所學的C++重學一遍了...... 感謝~ --

12/07 21:04,
+50 +20 +20 +20 +20
12/07 21:04

12/07 21:05,
二樓帥哥
12/07 21:05

12/07 21:05,
坐等答案安定。 LOL #1EtsHO_D
12/07 21:05

12/07 21:06,
四樓帥哥
12/07 21:06

12/07 21:06,
5樓吃屎
12/07 21:06

12/07 21:07,
原PO我站內信給你這種文章就不要佔版面了吧
12/07 21:07
-- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.121.73.10

02/07 23:28, , 1F
Expert C Programming 花了不少篇福在談 pointer, array
02/07 23:28, 1F

02/07 23:29, , 2F
很好用,很難用
02/07 23:29, 2F

02/07 23:29, , 3F
簡單來說就是會用就會用得很強大,不會用就覺得很渣
02/07 23:29, 3F
《C++ Primer 4/e》裡,「陣列和指標」一章最前面的簡述說: 現今的C++城市應該總是優先使用vectors 和iterators 取代低階的array 和pointer。 一個設計良好的程式只有在極端講求速度的class 的內部實作碼中才使用array 和pointer 在最後面的「本章提要」說: Pointers 和Arrays 對於某些低階任務可能有存在的必要,但我們應該盡量避免使用它們 ,因為他們容易出錯又很難除錯。一般而言應該優先使用程式庫提供的抽象事物而非語言 內建的arrays 和pointers,這一忠告在「多用strings,少用C-Style 字串(亦即以null 結尾之字元array)」這件事上尤其合適。是的,現代化C++程式不該再使用C-Style字串 OAQ

02/07 23:30, , 4F
你看過一遍就知道 Lppman 為什麼這麼說了
02/07 23:30, 4F

02/07 23:30, , 5F
array&pointer要學不容易學好囉
02/07 23:30, 5F

02/07 23:31, , 6F
我剛剛在3F的推文用詞不太對,應該說
02/07 23:31, 6F

02/07 23:32, , 7F
會用就會用得很強大,不會用就是只能用到某種地步
02/07 23:32, 7F

02/07 23:32, , 8F
這樣比較正確
02/07 23:32, 8F

02/07 23:32, , 9F
sorry
02/07 23:32, 9F

02/07 23:35, , 10F
不管你自己的程式該不該用,別人寫 pointer 你看不懂
02/07 23:35, 10F

02/07 23:36, , 11F
到時候你跟人家說你會 C/C++,人家也不會相信
02/07 23:36, 11F

02/07 23:49, , 12F
過點時間看進去 std::string 實作就曉得了...
02/07 23:49, 12F

02/07 23:56, , 13F
string的內部是什麼啊? 類似vector嗎?
02/07 23:56, 13F

02/08 00:23, , 14F
也要善用 cache 呀, indirect access 快到哪去?
02/08 00:23, 14F

02/08 00:32, , 15F
如果你目前不瞭解為什麼他這麼說,那代表你最好不要用 XD
02/08 00:32, 15F

02/08 00:32, , 16F
而等你瞭解了他為什麼這樣說,你也不會去用了 XDDD
02/08 00:32, 16F

02/08 00:51, , 17F
同意樓上, 要清楚說明也是可以, 只是怕你聽到一半就吸
02/08 00:51, 17F

02/08 00:51, , 18F
收不了, 那還是自己踩到洞學習經驗比較實際
02/08 00:51, 18F

02/08 01:13, , 19F
用過string真的就不太想用char* or char[]
02/08 01:13, 19F

02/08 01:13, , 20F
至於array的話嘛...效率還是還是比較好
02/08 01:13, 20F

02/08 01:14, , 21F
我想他應該是想要你用vector取代動態陣列
02/08 01:14, 21F

02/08 01:15, , 22F
要給靜態長度(而且很需要用註標塞東西)的就用array
02/08 01:15, 22F

02/08 01:16, , 23F
動態的就乾脆用vector以免你自己忘記delete
02/08 01:16, 23F

02/08 01:17, , 24F
但你在用vector之前還是要搞懂動態陣列在幹麻比較好
02/08 01:17, 24F

02/08 01:18, , 25F
其實vector所要取代的是new []不是plain array
02/08 01:18, 25F

02/08 01:18, , 26F
取代C-style array的是std::array
02/08 01:18, 26F

02/08 02:02, , 27F
你必須懂 可是沒必要用到時就盡量不要用
02/08 02:02, 27F
嗯...... 總之我現在就是再把指標和陣列的章節再好好的看幾次 寫題目寫一寫才發現還是很多觀念不清楚0.0 ※ 編輯: o07608 來自: 122.121.73.10 (02/08 08:34)

02/08 09:27, , 28F
推yoco大的話XD
02/08 09:27, 28F

02/08 22:24, , 29F
如果你要做的東西只是好玩,與運算速度無關,那就用
02/08 22:24, 29F

02/08 22:25, , 30F
vector。 但不懂指標就很難了解電腦的運作。
02/08 22:25, 30F

02/09 08:29, , 31F
反正遲早都要會寫,C++ 的程式裡通常也有 C-style code
02/09 08:29, 31F
文章代碼(AID): #1H4yV6cL (C_and_CPP)
文章代碼(AID): #1H4yV6cL (C_and_CPP)