我有一些代码可以做一件简单的事情:
如果参数的值为-1,那么我应该更改该值。 别的 - 什么都不做
我有一个包含20个参数的列表,但是我想知道是否有任何方法可以不进行检查:
如果param1 == -1那么......其他......
如果param2 == -1则....还是......
任何人都知道如何才能提高效率? 谢谢!
答案 0 :(得分:4)
如果参数是所有变量(它不在数组或其他东西中),你可以创建一个函数并写入
change_or_let_it_be( ¶m1, value );
change_or_let_it_be( ¶m2, value );
change_or_let_it_be( ¶m3, value );
并且你只有一个if(在函数中)和很多调用。 更好的方法是将它存储在某个结构(数组,列表等)中,并避免调用此函数20次。
答案 1 :(得分:3)
不确定我是否理解你想要的东西,但是这个怎么样?
void func(int params[20]) {
for (int i = 0; i < 20; ++i) {
if (params[i] == -1)
params[i] = NEW_VALUE;
}
}
使用for检查每个值,因此您不需要对所有不同的值进行硬编码,然后在-1为-1时更改参数。另请注意,我假设“高效”,这意味着更多的代码写入时间在这里!
答案 2 :(得分:0)
老实说,即使不是最漂亮的解决方案,if / then语句系列也是最有效的!将测试嵌入循环并将参数存储为数组需要进行以下额外计算:
- testing that the loop counter does not exceed the maximum
- incrementing the loop counter
- using pointer arithmetic to access each parameter
当然,如果您必须多次执行这20次测试,这些速度考虑因素只是一个因素。但实际上你已经尽可能高效地写了它:)
答案 3 :(得分:0)
另一个更清洁的解决方案:
int *p[] = {¶m1, ¶m2, ¶m3, NULL};
int i = 0;
for(;p[i] != NULL; i++) {
if(*p[i] == -1) *p[i] = SOME_VALUE;
}