count和count_if函数

count和count_if函数

最近在研究STL,遇到许多STL标准库函数,也算是C++的一部分吧!省时、高效!

头文件:#include <algorithm>

用法:统计符合条件的数量

count原型:count(address,address+n,匹配条件)

count_if原型:count_if(address,address+n,cmp),cmp自定义匹配方法

1.count函数的用法示例:

[cpp]

#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
int n,total,*p;
cin>>n; //有n个待查找数
p=new int[n];
for(int i=0;i<n;i++)
cin>>p[i];
total=count(p,p+n,1); //查找为值为1的数量
delete[] p;
cout<<total<<endl;
return 0;
}

[/cpp]

输入及输出:
5
1 3 2 1 1
3

2.count_if的标准用法

[cpp]

#include <iostream>
#include <algorithm>
using namespace std;

bool cmp(int a)
{
if(a<0)
return true;
else
return false;
}

int main()
{
int n,i,*p,total;
while(cin>>n)
{
total=i=0;//初始化
p=new int[n];
for(i=0;i<n;i++)
cin>>p[i];
total=count_if(p,p+n,cmp);
cout<<total<<endl;
delete[] p;
}
return 0;
}

[/cpp]

输入及输出:
5
-1 -2 -3 5 -4
4

3.count_if结构体中的匹配统计用法

[cpp]

//统计考及格的数量
#include <iostream>
#include <algorithm>
using namespace std;

class score
{
public:
int number;
int fen;
};

bool cmp(score a)
{
if(a.fen>60)
return true;
else
return false;
}

int main()
{
score *p;
int n,i,total;
while(cin>>n)
{
total=i=0;//初始化
p=new score[n];
for(i=0;i<n;i++)
cin>>p[i].number>>p[i].fen;
total=count_if(p,p+n,cmp);
cout<<total<<endl;
delete[] p;
}
return 0;
}

[/cpp]

输入及输出:

5
1 50
2 61
3 59
4 78
5 98
3