作者BearTsao (聽說有個東西叫臉書??)
看板C_and_CPP
標題[問題] Vector iterator的移動
時間Sun Dec 25 17:24:57 2011
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
VC2008
問題(Question):
int Sum=0;
vector<int> vec;
vector<int>::iterator iter;
iter = find(vec.begin(), vec.end(), 某值);
接下來就會有問題
Sum = count(iter+1, vec.end(), 某值);
我想要計算iter+1 到 vec.end()之間某值出現的個數,但會出現問題
若改為 Sum = count(iter, vec.end(), 某值); 則不會有問題
另外一種情形,假設
iter = vec.begin();
if(*iter+1 == 某值) 這裡也會有錯誤
{
Do some thing;
}
想在Release Mode下執行,但會出現這些問題
麻煩指點迷津了。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.134.18.155
※ BearTsao:轉錄至看板 Programming 12/25 17:27
→ tjjh89017:是不是要()? 12/25 17:46
→ tjjh89017:if(*(iter+1)== ...) 12/25 17:47
→ BearTsao:@@ 改了但好像沒差 12/25 18:09
推 j0214ack:如果你的vec大小只有1 iter+1就爆掉啦 12/25 20:11
→ BearTsao:我預設Capacity = 50, vec已讀入12筆資料,故size = 12 12/25 21:31
→ purincess:count那邊會不會是因為find沒找到阿@@(傳回vec.end()) 12/25 21:39
→ WJAider:*(iter+1) 有錯看起來實在是很像指到 vec.end() 12/25 21:43
→ WJAider:find 完有確認 iter == vec.end() 這件事嗎? 12/25 21:45
→ BearTsao:可能寫得不夠嚴謹@@ 先謝謝各位指導 12/25 22:18