//元素计数算法
#include<iostream>
#include<set>
#include<string>
#include<vector>
#include<algorithm>
#include<functional>
using namespace std;
//返回值是布尔的叫做谓词
//只有一个参数,叫做一元谓词
bool isEven(int elem)
{
return elem % 2 == 0;//偶数除以2才等于0
}
int main()
{
vector<int> ivec;
for (int i = 1; i <= 9; ++i)
{
ivec.push_back(i);
}
ivec.push_back(4);
ivec.push_back(4);
ivec.push_back(4);
for (auto i = ivec.begin(); i != ivec.end(); ++i)
cout << *i << " ";
cout << endl;
int num;
num = count(ivec.begin(), ivec.end(), 4);
cout << "have" << num << "个" << "4" << endl;
num = count_if(ivec.begin(), ivec.end(), isEven);
cout << "有" << num << "个偶数" << endl;
//函数对象可以自己做,也可以用预定义的
//预定义的函数对象和预定义的函数适配器。组合在一起
// 函数适配器(函数对象(函数对象有小括号)
num = count_if(ivec.begin(), ivec.end(), bind2nd(greater<int>(), 4));//判断有多少个数大于4
cout << "有" << num << "个数大于4" << endl;
int n,n1;
// param1 % 2
n = count_if(ivec.begin(), ivec.end(), not1(bind2nd(modulus<int>(), 2)));
cout << "yu " << n << "个oushu数" << endl;
n1 = count_if(ivec.begin(), ivec.end(), bind2nd(modulus<int>(), 2));
cout << n1 << endl;;
multiset<int> mset;
for (int i = 1; i <= 9; ++i)
{
mset.insert(mset.end(), i);
}
mset.insert(7);
mset.insert(7);
mset.insert(7);
mset.insert(2);
for (multiset<int>::iterator iter = mset.begin(); iter != mset.end(); ++iter)
{
cout << *iter << " ";
}
cout << endl;
//去查看数字的数目
int num1, num2;
num1 = count(mset.begin(), mset.end(), 7);//count速度慢
cout << "数字有几个7::"<<num1 << endl;
num2 = mset.count(7);//速度快,set会自动排序的红黑树,会利用已经排序的特点,用快速的方法计数,而类似于二分查找
cout << num2 << endl;
system("pause");
return 0;
}
元素计数算法
猜你喜欢
转载自blog.csdn.net/weixin_42655231/article/details/82779507
今日推荐
周排行