count,count_if

本文详细解释了C++中count算法用于计算容器中特定元素的出现次数,以及count_if算法用于统计满足特定条件元素的数量。通过实例演示,帮助读者理解并应用这两个算法。

1.   count算法用于计算容器中的某个给定值的出现次数。

2.    count_if算法是统计迭代器区间[first , last)上满足条件的元素个数n,按计数n是否引用返回

#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
int fun(int &i){
        return i%2 ? 0:1;
}
int main(){
        vector<int> v1 = {2,3,2,3,4,5,2,3};
        auto res = count(v1.begin(),v1.end(),2);
        cout<<res<<endl;
        auto res1 =count_if(v1.begin() , v1.end() ,fun);
        cout<<res1<<endl;
}
~   

分析代码的每一行功能def limit_cal_alarm(time_stamp, HI_rms, turbine_num, measurement_point, parameter_list): count_num_yellow = [] count_num_red = [] Alarm_yellow = [] Alarm_red = [] HI_rms = np.array(HI_rms) if len(time_stamp) < parameter_list['limit_cal_num']: Limit_yellow = -1 Limit_red = -1 Alarm_yellow = [] Alarm_red = [] Alarm_yellow_time = [] Alarm_red_time = [] Alarm_state = [] limit_cal_num_temp = parameter_list['limit_cal_num'] # print(turbine_num+' '+measurement_point+' 参与计算的音频数量需不少于 '+ # str(limit_cal_num_temp)+'>>>无法生成预警信息') else: mean_new = np.mean(HI_rms[0: parameter_list['limit_cal_num']]) std_new = np.std(HI_rms[0: parameter_list['limit_cal_num']]) Limit_yellow = (mean_new + 2 * std_new)*10**(parameter_list['yellow_level']/20) Limit_red = (mean_new + 3 * std_new)*10**(parameter_list['red_level']/20) limit_draw_yellow = Limit_yellow * np.ones(len(HI_rms)) limit_draw_red = Limit_red * np.ones(len(HI_rms)) index_new = HI_rms - limit_draw_yellow count_num_temp = 0 count_num_temp = 0 for ii in range(0, len(index_new)): if index_new[ii] > 0: count_num_temp = count_num_temp + 1 count_num_temp = min(count_num_temp,parameter_list['max_count_num']) count_num_yellow.append(count_num_temp) else: count_num_temp = count_num_temp - 1 count_num_temp = max(count_num_temp,parameter_list['min_count_num']) count_num_yellow.append(count_num_temp) Alarm_temp = 0 for ii in range(0, len(index_new)): if count_num_yellow[ii] == parameter_list['max_count_num']: Alarm_temp = 1 Alarm_yellow.append(Alarm_temp) else: if Alarm_temp == 1: if count_num_yellow[ii] == parameter_list['min_count_num']: Alarm_temp = 0 Alarm_yellow.append(Alarm_temp) else: Alarm_temp = 1 Alarm_yellow.append(Alarm_temp) else: Alarm_temp = 0 Alarm_yellow.append(Alarm_temp) index_new = HI_rms - limit_draw_red count_num_temp = 0 count_num_temp = 0 for ii in range(0, len(index_new)): if index_new[ii] > 0: count_num_temp = count_num_temp + 1 count_num_temp = min(count_num_temp,parameter_list['max_count_num']) count_num_red.append(count_num_temp) else: count_num_temp = count_num_temp - 1 count_num_temp = max(count_num_temp,parameter_list['min_count_num']) count_num_red.append(count_num_temp) Alarm_temp = 0 for ii in range(0, len(index_new)): if count_num_red[ii] == parameter_list['max_count_num']: Alarm_temp = 1 Alarm_red.append(Alarm_temp) else: if Alarm_temp == 1: if count_num_red[ii] == parameter_list['min_count_num']: Alarm_temp = 0 Alarm_red.append(Alarm_temp) else: Alarm_temp = 1 Alarm_red.append(Alarm_temp) else: Alarm_temp = 0 Alarm_red.append(Alarm_temp) if max(Alarm_yellow) == 0: Alarm_state = '正常' Alarm_yellow_time = [] # print(turbine_num+' '+measurement_point + '>>>>>>正常') else: Alarm_state = '预警' Alarm_yellow_time = time_stamp[Alarm_yellow.index(1)] # print(turbine_num+' '+measurement_point + ' '+Alarm_yellow_time + # '>>>>>>预警!') if max(Alarm_red) == 0: Alarm_red_time = [] else: Alarm_state = '报警' Alarm_red_time = time_stamp[Alarm_red.index(1)]
最新发布
09-10
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值