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;

}

C++ AUPR Calculation: Fixing Variable Array Size Errors

原文地址: https://www.cveoy.top/t/topic/njBi 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录