[問題] 刪除vector中 小於或等於0的數字

看板C_and_CPP作者 (Terry)時間14年前 (2011/10/18 21:12), 編輯推噓1(1023)
留言24則, 7人參與, 最新討論串1/2 (看更多)
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) VC++2008 問題(Question): 不好意思,請教一下,我寫一個簡單的程式如下: http://codepad.org/v6ChBZr7 主要是想刪除vector中小於或等於0的數字 如果是這樣子做: vint1.erase(remove(vint1.begin(),vint1.end(),vint1.at(vint1_index)),vint1.end()); ^^^^^^^^^^^^^^^^^^^^^ compiler就會說:發生例外狀況: std::out_of_range。 不知道有什麼辦法可以解決呢? 謝謝幫忙 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.34.100.113 ※ 編輯: bernachom 來自: 114.34.100.113 (10/18 21:12)

10/18 21:27, , 1F
vector::at 出來的不是 iterator
10/18 21:27, 1F

10/18 21:27, , 2F
請參考 remove_if
10/18 21:27, 2F

10/18 21:27, , 3F
你怎麼會想出這種外星人程式~"~
10/18 21:27, 3F

10/18 21:29, , 4F
因為對這語法不是很熟..我到處查資料寫出來的...@_@
10/18 21:29, 4F

10/18 21:29, , 5F
謝謝幫忙,我在試試看
10/18 21:29, 5F

10/18 21:29, , 6F
這還好吧 ... 不會很外星啊
10/18 21:29, 6F

10/18 21:38, , 7F
我最近也在初學C++,可以幫忙解釋一下為什麼要這樣寫嗎
10/18 21:38, 7F

10/18 21:40, , 8F
不是用iterator訪問vint1這個vector之後決定每個元素
10/18 21:40, 8F

10/18 21:40, , 9F
是否要erase,erase後得到新iterator,否則就++iterator
10/18 21:40, 9F

10/18 21:41, , 10F
這邊用remove有什麼優點?
10/18 21:41, 10F
用erase(remove())是我查文章查到的...我也不知道有什麼優點... http://www.360doc.com/content/09/0615/20/130577_3908783.shtml 我就先把他拿來用而已... ※ 編輯: bernachom 來自: 114.34.100.113 (10/18 21:43)

10/18 21:47, , 11F
因為如果只是要刪掉<=0的數字 根本不用這麼麻煩吧
10/18 21:47, 11F

10/18 21:47, , 12F
c++ 我覺得 algorithm 可以先 view 過一遍再看其他的.
10/18 21:47, 12F

10/18 21:47, , 13F
10/18 21:47, 13F

10/18 21:49, , 14F
謝謝各位的幫忙^_^
10/18 21:49, 14F

10/18 21:50, , 15F
我實際上的程式更複雜,只是我把我的需求寫成這一段而已
10/18 21:50, 15F

10/18 21:51, , 16F
所以可能我的做法上會奇怪一點點,還請見諒..
10/18 21:51, 16F

10/18 21:58, , 17F
版主大人,你的好精簡...我反應不過來..我要研究一下...謝謝^_^

10/18 22:00, , 18F
remove的用法沒有問題 問題在你把-3 remove掉以後
10/18 22:00, 18F

10/18 22:01, , 19F
你的vint1_index=3 但是vector size也是3 你還要印at(3)
10/18 22:01, 19F

10/18 22:02, , 20F
我有想過是在刪除-3之後可能會發生問題
10/18 22:02, 20F

10/18 22:02, , 21F
但是想不太出來怎麼解決..
10/18 22:02, 21F
※ 編輯: bernachom 來自: 114.34.100.113 (10/18 22:03)

10/18 22:03, , 22F
先寫出一個 "假裝看不到" 的作法, 之後再改成 "殺掉不
10/18 22:03, 22F

10/18 22:04, , 23F
合條件的" 會比較好做
10/18 22:04, 23F

10/18 22:05, , 24F
謝謝各位幫忙,我來研究一下,感謝。
10/18 22:05, 24F
文章代碼(AID): #1EdNibRT (C_and_CPP)
文章代碼(AID): #1EdNibRT (C_and_CPP)