count()函数有关问题
count()函数问题
程序:
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
bool dividesBy3(int i)
{
if((i%3) == 0)return true;
return false;
}
int main()
{
vector <int> v;
register unsigned int i;
for(i = 0;i < 20;i++)v.push_back(i);
cout < < "Sequence:\n ";
for(i = 0;i < v.size();i++)
cout < < v[i] < < " ";
cout < < endl;
i = count_if(v.begin(),v.end(),dividesBy3);
cout < < i < < "numbers are divisible by 3.\n ";
system( "pause ");
return 0;
}
问题:
一个问题
i = count_if(v.begin(),v.end(),dividesBy3);
中为什么用count_if()而不用count()两者有什么区别??
------解决方案--------------------
count_if()不是针对某个值出现次数进行计数,而是对“使某个判断式(predicate)为真”的元素进行计数
------解决方案--------------------
count_if()的第3个参数就是通过传递一个函数对象进行判断,比count()复杂,当你的dividesBy3返回一个true时,才记数~而不是仅仅在iterator指定的范围内寻找
程序:
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
bool dividesBy3(int i)
{
if((i%3) == 0)return true;
return false;
}
int main()
{
vector <int> v;
register unsigned int i;
for(i = 0;i < 20;i++)v.push_back(i);
cout < < "Sequence:\n ";
for(i = 0;i < v.size();i++)
cout < < v[i] < < " ";
cout < < endl;
i = count_if(v.begin(),v.end(),dividesBy3);
cout < < i < < "numbers are divisible by 3.\n ";
system( "pause ");
return 0;
}
问题:
一个问题
i = count_if(v.begin(),v.end(),dividesBy3);
中为什么用count_if()而不用count()两者有什么区别??
------解决方案--------------------
count_if()不是针对某个值出现次数进行计数,而是对“使某个判断式(predicate)为真”的元素进行计数
------解决方案--------------------
count_if()的第3个参数就是通过传递一个函数对象进行判断,比count()复杂,当你的dividesBy3返回一个true时,才记数~而不是仅仅在iterator指定的范围内寻找