0

私は次のコードを持っています:

        NodePtr bestChild = (diff < 0) ? node->child1 : node->child2;
        NodePtr otherChild = (diff < 0) ? node->child2 : node->child1;

bestChild変数とotherChild変数を設定するためのより効率的な方法はありますか?

注: diffでありfloat、比較は非常に長い操作です。

また、私は次の解決策を試しました:

        NodePtr bestChild = (diff < 0) ? node->child1 : node->child2;
        NodePtr otherChild = (bestChild == node->child2) ? node->child1 : node->child2;

この場合、私は1つの比較を行いませんが、それが最善の方法であるかどうかはわかりません。

4

1 に答える 1

2

また:

NodePtr bestChild, otherChild;
if (diff < 0)
{
    bestChild = node->child1;
    otherChild = node->child2;
}
else
{
    bestChild = node->child2;
    otherChild = node->child1;
}

また

NodePtr children[2] = (diff < 0) ? {node->child1, node->child2} : {node->child2, node->child1};

または、コンパイラがおそらくこれを行うので、そのままにしておきます。

于 2012-04-17T08:47:19.543 に答える