C++ AUPR Calculation: Fixing Variable Array Size Errors
double calculate_aupr(double* labels, double* scores, int num_samples) { // 根据得分对样本进行排序 for (int i = 0; i < num_samples; i++) { for (int j = i + 1; j < num_samples; j++) { if (scores[j] > scores[i]) { double temp_score = scores[i]; scores[i] = scores[j]; scores[j] = temp_score; double temp_label = labels[i]; labels[i] = labels[j]; labels[j] = temp_label; } } }
// 计算P和R
// 错误:无法使用变量大小声明数组
// double p[num_samples + 1];
// double r[num_samples + 1];
// 使用动态内存分配修复错误
double* p = new double[num_samples + 1];
double* r = new double[num_samples + 1];
// ... 计算 p 和 r ...
// 释放动态分配的内存
delete[] p;
delete[] r;
// 或者使用 std::vector
// std::vector<double> p(num_samples + 1);
// std::vector<double> r(num_samples + 1);
// ... 计算 p 和 r ...
// std::vector 自动处理内存释放
// 返回 AUPR 值
return aupr;
}
原文地址: https://www.cveoy.top/t/topic/njBi 著作权归作者所有。请勿转载和采集!