1.count
2.count_if
3.关联容器的等效成员函数
(1) set.count
(2) multiset.count
(3) map.count
(4) multimap.count
#include <iostream>
#include <algorithm>
#include <vector>
#include <set>
#include <functional>
using namespace std;
//谓词 一个参数 所以叫一元谓词
bool isEven( int elem )
{
return elem%2 == 0;
}
int main()
{
vector<int> ivec;
for( int i=0; i<9; i++ )
{
ivec.push_back(i);
}
for( vector<int>::iterator itr = ivec.begin(); itr!=ivec.end(); ++itr )
{
cout<<*itr<<' ';
}
cout<<endl;
ivec.push_back(4);
int num = count(ivec.begin(), ivec.end(), 4);
cout<<"has "<<num<<" 4"<<endl;
num = count_if(ivec.begin(), ivec.end(), isEven);
cout<<"has "<<num<<"偶数"<<endl;
num = count_if(ivec.begin(), ivec.end(), not1(bind2nd(modulus<int>(),2)));
cout<<"has "<<num<<"偶数"<<endl;
// 函数适配器 函数对象
// param1 > param2
// param1 > 4
// 将4绑定在第二个参数
num = count_if(ivec.begin(), ivec.end(), bind2nd(greater<int>(),4));
cout<<"has "<<num<<"个数 > 4"<<endl;
multiset<int> mset;
for(int i=0; i<9; i++ )
{
mset.insert(mset.end(), i);
}
for(multiset<int>::const_iterator itr = mset.begin(); itr != mset.end(); ++itr)
{
cout<<*itr<<' ';
}
mset.insert(7);
num = count(mset.begin(), mset.end(), 7);
cout<<"multiset has "<<num<<" num 7"<<endl;
return 0;
}