对于我的大学,我们有一个分配atm,它将一个.txt文件解析为一个州和县的2个结构。之后,我们有几种不同的需求需要进一步评估数据,例如按家庭收入中位数对州/县进行排序。不幸的是,我需要能够对一个州阵列和一个县阵列执行每个操作。是否有一种有效的方法可以重用我使用状态的函数并将其用于县,还是我必须重载函数并编写更多不需要的代码。这是用于状态的示例函数。
/*********************************************************************
** Function: print_lowest_2015
** Description: prints lowst unenmployment in 2015 from state
** Parameters: states and num
** Pre-Conditions: n/a
** Post-Conditions: n/a
*********************************************************************/
void print_lowest_2015(state* arr, int num) {
int ue;
string name;
ue= arr[0].unemployed_2015;
for (int i = 0; i < num; i++) {
if (arr[i].unemployed_2015 < ue) {
ue = arr[i].unemployed_2015;
name = arr[i].name;
}
}
cout << "State with the lowest 2015 unemployment rate is " << name << " with a value of " << ue << endl;
}
/*********************************************************************
** Function: print_lowest_2015
** Description: prints lowst unenmployment in 2015 from counties
** Parameters: counties and num
** Pre-Conditions: n/a
** Post-Conditions: n/a
*********************************************************************/
void print_lowest_2015(county* arr, int num) {
int ue;
string name;
ue = arr[0].unemployed_2015;
for (int i = 0; i < num; i++) {
if (arr[i].unemployed_2015 < ue) {
ue = arr[i].unemployed_2015;
name = arr[i].name;
}
}
cout << "County with the lowest 2015 unemployment rate is " << name << " with a value of " << ue << endl;
}
答案 0 :(得分:0)
void print_lowest_2015(state * arr,int num){
对数组使用原始指针不是很好的c ++。因此,不要费心改进它。这样的代码是在1998年之前编写的。在2019年学习这样的代码非常危险且无用。
如果由于某种原因您无法更改调用代码,则可以通过以下方式重复使用该函数。
template<class Div>
void print_lowest_2015(Div* arr, int num) {
auto min_div = std::min_element(arr, arr+num, [](Div& s1, Div& s2){
return s1.unemployed_2015 < s2.unemployed_2015;
});
cout << "State with the lowest 2015 unemployment rate is " << min_div->name << " with a value of " << min_div->unemployed_2015 << '\n';
}