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指定的范围内寻找