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;
} 展开
我在没看懂的地方标记了,*/
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;
} 展开
1个回答
展开全部
p = find_if(v.begin(),v.end(), isMinus); //从开始到结束全范围查找满足 isMinus 的节点
while (p !=v.end()) { //如果找到了, 计数+1
count++;
p = find_if(p + 1, v.end(), isMinus); // 从找到的节点的后面直到结束继续找满足isMinus的节点
while (p !=v.end()) { //如果找到了, 计数+1
count++;
p = find_if(p + 1, v.end(), isMinus); // 从找到的节点的后面直到结束继续找满足isMinus的节点
追问
谢谢,我已经知道了,直接把findif当成 if就好了,,,
不过还是要谢谢你
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询