0

我有以下代码:

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

有没有更有效的方法来设置 bestChild 和 otherChild 变量?

注意: difffloat和比较是相当长的操作。

我也尝试了以下解决方案:

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

在这种情况下,我不会进行比较,但我不确定这是不是最好的方法。

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 回答