#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
using namespace std;
//count
//统计内置数据类型
void test01()
{
vector<int>v;
v.push_back(10);
v.push_back(40);
v.push_back(30);
v.push_back(40);
v.push_back(20);
v.push_back(40);
int num = count(v.begin(), v.end(), 40);
cout << "40的元素个数:" << num;
}
//统计自定义数据类型
class Person
{
public:
Person(string name, int age)
{
this->m_name = name;
this->m_age = age;
}
bool operator==(const Person&p)
{
if (this->m_age == p.m_age)
{
return true;
}
else
{
return false;
}
}
string m_name;
int m_age;
};
void test02()
{
vector<Person>v;
Person p1("刘备", 35);
Person p2("关羽", 35);
Person p3("张飞", 35);
Person p4("赵云", 30);
Person p5("曹操", 40);
v.push_back(p1);
v.push_back(p2);
v.push_back(p3);
v.push_back(p4);
v.push_back(p5);
Person p("诸葛亮", 35);
int num = count(v.begin(), v.end(), p);
cout << "和诸葛亮同岁数的人有多少个:" << num;
}
//count_if
class Great10
{
public:
bool operator()(int val)
{
return val > 10;
}
};
void test03()
{
vector<int>v;
v.push_back(10);
v.push_back(40);
v.push_back(30);
v.push_back(20);
v.push_back(40);
v.push_back(20);
int num = count_if(v.begin(), v.end(), Great10());
cout << "大于10的数有几个:" << num;
}
//统计自定义数据类型
class Person1
{
public:
Person1(string name, int age)
{
this->m_Name = name;
this->m_Age = age;
}
string m_Name;
int m_Age;
};
class AgeGreat20
{
public:
bool operator()(const Person& p)
{
return p.m_age > 20;
}
};
void test04()
{
vector<Person>v;
Person p1("刘备", 35);
Person p2("关羽", 35);
Person p3("张飞", 35);
Person p4("赵云", 40);
Person p5("曹操", 20);
v.push_back(p1);
v.push_back(p2);
v.push_back(p3);
v.push_back(p4);
v.push_back(p5);
//统计年龄大于20的
int num = count_if(v.begin(), v.end(), AgeGreat20());
cout << "年龄大于20的个数:" << num;
}
int main()
{
test04();
}
11-07
11-07