[問題] Vector iterator的移動

看板C_and_CPP作者 (聽說有個東西叫臉書??)時間14年前 (2011/12/25 17:25), 編輯推噓1(108)
留言9則, 5人參與, 最新討論串1/2 (看更多)
開發平台(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

12/25 17:46, , 1F
是不是要()?
12/25 17:46, 1F

12/25 17:47, , 2F
if(*(iter+1)== ...)
12/25 17:47, 2F

12/25 18:09, , 3F
@@ 改了但好像沒差
12/25 18:09, 3F

12/25 20:11, , 4F
如果你的vec大小只有1 iter+1就爆掉啦
12/25 20:11, 4F

12/25 21:31, , 5F
我預設Capacity = 50, vec已讀入12筆資料,故size = 12
12/25 21:31, 5F

12/25 21:39, , 6F
count那邊會不會是因為find沒找到阿@@(傳回vec.end())
12/25 21:39, 6F

12/25 21:43, , 7F
*(iter+1) 有錯看起來實在是很像指到 vec.end()
12/25 21:43, 7F

12/25 21:45, , 8F
find 完有確認 iter == vec.end() 這件事嗎?
12/25 21:45, 8F

12/25 22:18, , 9F
可能寫得不夠嚴謹@@ 先謝謝各位指導
12/25 22:18, 9F
文章代碼(AID): #1EzklnlR (C_and_CPP)
文章代碼(AID): #1EzklnlR (C_and_CPP)