看板 C_and_CPP 關於我們 聯絡資訊
開發平台(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