C++迭代器问题,学习stl,网上找了些资料,这个有点看不懂

/*建立了一个vector容器,向里面存入随机数,在最后显示负数有多少个,我在没看懂的地方标记了,*/intmain(){srand(time(NULL));//Seed... /*建立了一个vector容器,向里面存入随机数,在最后显示负数有多少个,
我在没看懂的地方标记了,*/

int main()
{
srand( time(NULL) ); // Seed random generator

for_each(v.begin(), v.end(), initialize);//调用普通函数
cout << "Vector of signed long integers" << endl;
for_each(v.begin(), v.end(), show);
cout << endl;

// Use predicate function to count negative values
//
int count = 0;
vector<long>::iterator p;
p = find_if(v.begin(),v.end(), isMinus);//调用断言函数
while (p !=v.end()) { 就这儿没看明白
count++; count不是从第一个负数开始每循环一次都 要加1吗,但是
p = find_if(p + 1, v.end(), isMinus); 输出的结果是正确的,确实输出了负数个数
}
cout << "Number of values: " << VSIZE << endl;
cout << "Negative values : " << count << endl;

return 0;
}
展开
 我来答
joychen_
2014-08-13 · TA获得超过1747个赞
知道大有可为答主
回答量:1617
采纳率:100%
帮助的人:1833万
展开全部
p = find_if(v.begin(),v.end(), isMinus); //从开始到结束全范围查找满足 isMinus 的节点

while (p !=v.end()) { //如果找到了, 计数+1

count++;

p = find_if(p + 1, v.end(), isMinus); // 从找到的节点的后面直到结束继续找满足isMinus的节点
追问
谢谢,我已经知道了,直接把findif当成 if就好了,,,
不过还是要谢谢你
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式