将if-else转换为for循环
问题描述:
int max_range = 100;
// I do not want to add more else if.. Actually max range is still 100 with more else ifs.
// Range can take values from 0 to 100
if (range <= 10){
a[0]= value;
}
else if (range > 10 && range <= 20){
a[1]= value;
}
else if (range> 20 && range <= 30){
a[2]= value;
}
else if (range > 30 && range <= 40){
a[3]= value;
}
else if (range> 40 && <= max_range){
a[4]= value;
}
它是简单的代码。我希望它删除嵌套的else if并使用for循环。 如何将其转换为for循环?将if-else转换为for循环
答
我其他的答案是非常特别的界限是10.倍数运行时修改的版本会是这样的
std::set<int> boundaries = { 10, 20, 30, 40, max_range };
// ... potentially modify `a` and `boundaries`, keeping the number of elements equal
a[std::distance(boundaries.begin(), boundaries.lower_bound(range))] = value
答
I would like it to remove the nested else if's and use a for loop
可能不正确表达:有在你的例子没有nested if-else
。
- 循环,if-else和开关工作方式不同但它们都处理条件:
循环反复做;检查一些条件n
次,而如果切换它们检查一次。所以你不能将if-else转换成循环。
这的确是一个很好的编程努力使代码有效和尽可能小,但并非总是如此。如果这样的话,为什么这些专家会用数百万的代码来构建一个庞大的程序
您的代码正常工作。
'if' -'else'是一个操作 - 什么是你的'for'循环将循环? – doctorlove
我真的不知道如何用循环替换它。我猜,你可以将索引循环到“a”,但是无论如何你仍然需要某种范围的条件。它会更易读易懂吗?可能不会。 –
把'if'改成'switch'是我见过的,但是看起来你可以做一个从'0'到'max_range/10'的循环。循环值(比如'i')可以用作索引,比如'if(range> i * 10 && range GolezTrol