[問題] 如何移除vector中特定位置的元素

看板C_and_CPP (C/C++)作者 (Zoxge)時間15年前 (2010/09/01 12:40), 編輯推噓3(3018)
留言21則, 7人參與, 最新討論串1/1
小弟只知道可以用 remove (myvector.begin(), myvector.end(), xxx) 來刪掉myvector中存放的值是xxx者 然後再用myvector.resize ( myvector.size() - 1 )來修正size ^^^ 如果xxx只有一個的話 但如果要刪掉的xxx在myvector中有很多個,而我只是要刪其中我知道確切位置的那一個 請問這要怎麼做呢? 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.195.3.39

09/01 12:53, , 1F
把該位置的值幹掉 並將後面的值往前移 O(n)
09/01 12:53, 1F

09/01 12:54, , 2F
v.erase(remove(v.begin(),v.end(),val),v.end())
09/01 12:54, 2F

09/01 12:54, , 3F
remove並沒刪掉元素 而是將元素往容器後面放
09/01 12:54, 3F

09/01 13:43, , 4F
知道位置直接v.erase()丟該位置的iterator進去不就好了
09/01 13:43, 4F

09/01 14:27, , 5F
樓上秒殺
09/01 14:27, 5F

09/01 14:33, , 6F
.....用 resize 這招還真是有創意。
09/01 14:33, 6F

09/01 14:39, , 7F
剛開始還以為是capacity的問題...
09/01 14:39, 7F

09/01 17:27, , 8F
請問t大的意思是好還是不好啊@@"
09/01 17:27, 8F

09/01 20:18, , 9F
意思是....不好
09/01 20:18, 9F

09/01 22:16, , 10F
謝謝大家~
09/01 22:16, 10F

09/01 22:18, , 11F
那如果想要一次刪好幾個位置呢? (這幾個位置是不連續的)
09/01 22:18, 11F

09/01 22:18, , 12F
http://0rz.tw/XEbOr 這裡的說法似乎只能刪連續的位置...
09/01 22:18, 12F

09/01 22:18, , 13F
remove+resize 那招我是看書上寫的 XD
09/01 22:18, 13F

09/01 22:21, , 14F
直接買一本 Effective STL 看比較實在。
09/01 22:21, 14F

09/01 22:21, , 15F
那招不好用的話.. 那remove和resize好像沒其它可用之處了?
09/01 22:21, 15F


09/01 22:26, , 17F
p.177 (右下角的頁碼為準) Item 32 看看。
09/01 22:26, 17F

09/01 22:29, , 18F
Google 的第一頁就有的東西,有版權問題去怪 Google XD
09/01 22:29, 18F

09/01 22:30, , 19F
奇怪之前怎麼鬼打牆搜不到原文的...謝謝 t 大 ^^
09/01 22:30, 19F

09/01 22:31, , 20F
我也是剛剛才發現網路上有,還是搜尋結果第一筆。
09/01 22:31, 20F

09/01 22:40, , 21F
喔喔 好實用的東西 感謝t大!!
09/01 22:40, 21F
文章代碼(AID): #1CVTbPyh (C_and_CPP)
文章代碼(AID): #1CVTbPyh (C_and_CPP)