我有以下代码:
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;
在这种情况下,我没有进行一次比较,但我不确定这是一种最佳方式。
答案 0 :(得分: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};
或者保持原样,因为编译器可能会为您执行此操作。