用无分支代码替换if else语句

时间:2014-09-12 18:38:04

标签: c++ vector

我的代码如下:

    if(a[i]==b[j])
    {
     vect1.push_back(i);
     vect2.push_back(j);
    }

如何在不使用c ++中的if else的情况下重写上述语句。

谢谢!!!

1 个答案:

答案 0 :(得分:1)

如果你真的不能使用if,可能会有一些比赛,当然有办法 尽管如此,即使它看起来没有分支,但编译代码中可能还有一个分支。

我认为它是混淆,但无论如何,这里是:

if(cond) {
    expr1;
    expr2;
}

可以写成:

(void)((cond) && (expr1,expr2,0));

不要使用它,除了可能在某些模糊的预处理器 - hackif之外没有别的事情可做,或者以后必须使用它的人(包括你)将会受到强烈的不满。