函数原型:
自定义数据类型:
代码语言:javascript复制#include<iostream>
using namespace std;
#include<deque>
#include<algorithm>
#include<string>
bool a(int val)
{
return val % 2 == 0;
}
void test01()
{
deque<int> d;
d.push_front(6);
d.push_front(5);
d.push_front(4);
d.push_front(3);
d.push_front(2);
d.push_front(1);
cout << count_if(d.begin(), d.end(), a) << endl;
}
int main()
{
test01();
system("pause");
return 0;
}
自定义数据类型:
代码语言:javascript复制#include<iostream>
using namespace std;
#include<deque>
#include<algorithm>
#include<string>
class person {
public:
string name;
int age;
person(string n, int a) :name(n), age(a) {}
};
//仿函数
class compare {
public:
//const可写可不写,最好写上
bool operator()(const person &p)
{
return p.age > 40;
}
};
void test01()
{
//count_if
person p1("孙悟空", 180);
person p2("沙僧", 60);
person p3("猪八戒", 80);
person p4("白骨精", 18);
person p5("牛魔王", 40);
deque<person> m = { p1,p2,p3,p4,p5 };
person p6("二郎神", 30);
cout << count_if(m.begin(), m.end(), compare());
}
int main()
{
test01();
system("pause");
return 0;
}
区别:为什么count那里要加const,这边不要 因为count那里是进行元素比较操作,需要重载==运算符,要让底层识别,所以要加const 而这边是作为条件,将元素放入仿函数中看是否符合条件 总结:最好都加上const