作者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
1F:→ tjjh89017:是不是要()? 12/25 17:46
2F:→ tjjh89017:if(*(iter+1)== ...) 12/25 17:47
3F:→ BearTsao:@@ 改了但好像没差 12/25 18:09
4F:推 j0214ack:如果你的vec大小只有1 iter+1就爆掉啦 12/25 20:11
5F:→ BearTsao:我预设Capacity = 50, vec已读入12笔资料,故size = 12 12/25 21:31
6F:→ purincess:count那边会不会是因为find没找到阿@@(传回vec.end()) 12/25 21:39
7F:→ WJAider:*(iter+1) 有错看起来实在是很像指到 vec.end() 12/25 21:43
8F:→ WJAider:find 完有确认 iter == vec.end() 这件事吗? 12/25 21:45
9F:→ BearTsao:可能写得不够严谨@@ 先谢谢各位指导 12/25 22:18