Re: [問題] 刪除vector中 小於或等於0的數字
※ 引述《bernachom (Terry)》之銘言:
: 開發平台(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。
: 不知道有什麼辦法可以解決呢?
: 謝謝幫忙
硬幹的時間又到了。
O(n)的做法。
給定兩個index i, j。i 負責 > 0 的數,j 負責迭代每一個元素。
1.如果 j 碰到 > 0 的數, Array[i] = Array[j]; ++i; ++j;
2.否則 ++j;
3.j == size 跳出迴圈, vector resize i
虛擬碼:
int i = 0, j = 0, sz = vec.size();
while(j < sz) {
if(Array[j] > 0) {
Array[i++] = Array[j];
}
++j;
}
vec.resize(i);
報告完畢!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.43.115.147
→
10/18 23:10, , 1F
10/18 23:10, 1F
推
10/18 23:16, , 2F
10/18 23:16, 2F
→
10/18 23:21, , 3F
10/18 23:21, 3F
→
10/18 23:23, , 4F
10/18 23:23, 4F
→
10/24 11:12, , 5F
10/24 11:12, 5F
推
10/24 11:42, , 6F
10/24 11:42, 6F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):