我有一个整数参数,用来控制事件在特定运行中发生的次数。
例如,如果每次运行的迭代次数是1000,那么如果我希望每200次迭代发生一次事件,那么参数FREQ
将是5。但是,我希望能够更改迭代次数,但保持比率不变,并且如果我根本不希望事件发生,还希望能够将FREQ
参数设置为0。
以下是我目前正在使用的:
int N_ITER = 1000;
int FREQ = 5;
void doRun(){
int count = 0;
for (int i = 0; i < N_ITER; ++i){
if (FREQ > 0){
if (count < N_ITER/FREQ){
doSomething();
count++;
}
else{
doSomethingElse();
count = 0;
}
}
else{
doSomething();
}
}
}
这很好,但它不适合我使用嵌套的条件句,尤其是当我有两批doSomething()
时,我觉得它应该比这更容易实现。
我试着做一个条件if (FREQ > 0 && count < N_ITER/FREQ)
,但很明显,由于被零除,它抛出了一个Floating point exception
。
我也尝试过使用try/catch块,但就混乱程度而言,它与使用嵌套条件句没有什么不同。这个问题有更优雅的解决方案吗?
重新安排条件如何?使用count*FREQ < N_ITER
而不是count < N_ITER/FREQ
。如果是FREQ = 0
,则表达式仍然为true。
int N_ITER = 1000;
int FREQ = 5;
void doRun() {
int count = 0;
for (int i = 0; i < N_ITER; ++i) {
if (count*FREQ < N_ITER) {
doSomething();
count++;
} else {
doSomethingElse();
count = 0;
}
}
}