微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用count_if函数计算向量中元素的频率?

如何解决如何使用count_if函数计算向量中元素的频率?

我的代码

bool func(int i){
    if(i==x)return 1;
    else return 0;
}

int findFrequency(vector<int> v,int x){
    
    int ans=count_if(v.begin(),v.end(),func);
    return ans;
}

如何在count_if函数中传递“ x”? 这里,“ x”是向量中存在的要计数的数字。

解决方法

要计算向量中的特定值,可以使用std::count()

std::vector<int> v;
int x = 1;
auto c = std::count(v.begin(),v.end(),x);

如果要使用std::count_if(),则可以使用状态为以下的函数对象:

struct if_counter {
    int x;
    bool operator()(int y) { return x == y; }
};

auto x = 1;
auto c = std::count_if(v.begin(),if_counter{x});

基本上,这与使用lambda表达式所获得的效果相同:

int x = 1;
c = std::count_if(v.begin(),[x](int y){ return x == y; });

Complete Example

,

{ "name": "any name","category": 1,"price": 19000,"description": "Please Purchase","count": 5,"image": [ { "image" : i?? } ] } 函数内部使用lambda函数是一种很好的清洁方法。上面的答案@idclev指出了这一点,这是一个与您现有代码更相似的版本:

findFrequency

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。