作者loveme00835 (最愛朴素妍)
看板C_and_CPP
標題Re: [問題] vector push_back fail.
時間Sat Jan 15 02:05:27 2011
※ 引述《EdisonX (閉上眼的魚)》之銘言:
: 開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
: vs 2008
: 問題(Question):
: primer ch9 剛念完,裡面提到 find ,
: 於是實做了類似下面的東西
: beg = ivec.begin(), end=ivec.end();
: do{
: beg = find(beg, end, 2);
: vit.push_back(beg++);
: }while(beg!=end);
: 完整程式碼及錯誤視窗於下連結,
: 於執行期會失敗, 不知是不是我哪裡觀念有問題
: 錯誤結果(Wrong Output):
: http://ppt.cc/9pfV
: 程式碼(Code):(請善用置底文網頁, 記得排版)
: http://nopaste.csie.org/8b2fc
: 補充說明(Supplement):
: Primer 第二篇是不是要懂資料結構、演算法才念得下去?
: (資料結構我只知道 link list,演算法完全沒學過,只知道幾個簡單的排序)
: 我覺得現在念得好痛苦,是不是要有其它的輔助書籍?
: 謝謝各位。
如果可以, STL algorithms 搭 lambda function 會比較好讀,
我比較笨, 原 PO 這樣寫法, 要多看幾個循環才比較清楚流程.
個人偏好把要完成的任務分成好幾個小步驟來做, 像此例可以把
:
「尋找值為 VALUE 的所有元素位址」
拆解成:
(1)「取得所有元素的位址」
(2)「保留(1)中取值後為 VALUE 的位址」
各步驟很容易分離成獨立的函式, 而且跟你這次要完成的工作較
沒直接關聯性, 未來要重複使用的機會也高.
此例我是用 vector<int>::pointer, 不一定要用 algorithms,
但是打多點單字在程式碼裡比打註解好多了, 也可以減少自己步
進時犯的錯.
程式碼:
http://codepad.org/UgLFzP31
知道在 STL容器上有哪些操作, 以及做了有什麼效果、你需要保
證的前置條件, 就足以去使用它們了..用一個類還要懂它的演算
法原理, 那自己寫就好啦.
--
◢████ ◢█ ◢██◣ ◢█ ◢███ ◢█
T-ara版怎麼去
████◤
██
◢██◣█
██
████
██
s ~>
T-ara
█/███
██
██
██
█/█ ◢█
██
█/█ 歡迎您的光臨
████◤
██
██
██
██◤
███◤
██◤
恩靜、
智妍、
孝敏
█/███
██
█/█
█◤
██
█/██
██
素妍、
居麗、
寶藍
████◤
█◤
◥██◤ █◤
████◤
█◤
花英 ψmakigoto123
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.121.197.115
※ 編輯: loveme00835 來自: 140.121.197.115 (01/15 02:30)
推 EdisonX:謝謝指教,可能我太嫩,目前還看不大懂 XD 01/15 12:48
推 tomap41017:lambda function真是好物><問題是要4.5才支援QQ 01/15 12:51