C/C++知识点之C++ STL之count函数
小标 2018-12-14 来源 : 阅读 4641 评论 0

摘要:本文主要向大家介绍了 C/C++知识点之C++ STL之count函数,通过具体的内容向大家展示,希望对大家学习C/C++知识点有所帮助。

本文主要向大家介绍了 C/C++知识点之C++ STL之count函数,通过具体的内容向大家展示,希望对大家学习C/C++知识点有所帮助。

谓词(predicate):是做某些检测的函数,返回用于条件判断的类型,指出条件是否成立。

 总结:

count       :  在序列中统计某个值出现的次数

count_if   :    在序列中统计与某谓词匹配的次数

count和count_if函数是计数函数,先来看一下count函数:count函数的功能是:统计容器中等于value元素的个数。先看一下函数的参数:count(first,last,value); first是容器的首迭代器,last是容器的末迭代器,value是询问的元素。可能我说的不太详细,来看一个例题:给你n个数字(n<=1000),再给你一个数字m,问你:数字m在n个数字中出现的次数。
看到这道题,我们会想到使用sort+equal_range函数的配合(n的范围大约在1万---10万左右),不过n<=1000 数据量不大,所以我们可以直接使用count函数,这里我们要注意一点:count函数的复杂度是线性的,最坏情况是O(n)。这题很简单,所以我们很快就可以写出代码:

#include 
#include 
#include 
#include 
using namespace std;
int main()
{
    int n;
    vector  V;
    cin>>n;
    for(int i=0;i<n;i++)
    {
        int temp;
        cin>>temp;
        V.push_back(temp);
    }
    int ask;
    while(cin>>ask)
    {
        int num=count(V.begin(),V.end(),ask);
        cout<<num<<endl;
    }
    return 0;
}


  
但是,假如我们要使用STL的函数 统计1-10奇数的个数,怎么办呢?所以,我们就需要使用count_if函数,这是一个很有用的函数,我们要重点介绍它。看一下count_if函数的参数:count_if(first,last,value,cmp); first为首迭代器,last为末迭代器,value为要查询的元素,cmp为比较函数。
其实cmp比较函数才是整个count_if函数的核心,cmp比较函数是编程的人写的,返回值是一个布尔型,我相信看完我的例题后,就可以理解这个函数的应用。例题:统计1-10奇数的个数(我的代码):
  

#include 
#include 
#include 
#include 
using namespace std;
bool comp(int num)
{
    return num%2;
}
int main()
{
    vector  V;
    for(int i=1;i<=10;i++)
        V.push_back(i);
    cout<<count_if(V.begin(),V.end(),comp)<<endl;
    return 0;
}


  
 成绩大于90
 

#include 
#include 
#include 
#include 
#include 
using namespace std;
struct student
{
    string name;
    int score;
};
bool compare(student a)
{
    return 90<a.score;
}
int main()
{
    int n;
    cin>>n;
    vector V;
    for(int i=0;i<n;i++)
    {
        student temp;
        cin>>temp.name>>temp.score;
        V.push_back(temp);
    }
    cout<<count_if(V.begin(),V.end(),compare)<<endl;
    return 0;
}

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标编程语言C/C+频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 1 不喜欢 | 2
看完这篇文章有何感觉?已经有3人表态,33%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved