如何简化检查一对数字是(1,2)还是(2,1)?
我需要确保一对数字是 (1, 2) 或 (2, 1)。x 和 y 始终为正。我现在使用的代码:
if ((x == 2 && y == 1) ||
(x == 1 && y == 2)) {
return 1;
}
看起来有点笨重,感觉可以简化一下。然而,我尝试的一切都导致了误报。
回答
这是进行这种比较的最直接方式。
它也比您可能想出的任何替代方案更具可读性,因此无需更改它。
回答
这是我认为更具可读性的一种编写方法:
if (std::set{x,y} == std::set{1,2})
{
return 1;
}
请注意,这不如您问题中的版本有效。例如,不要在将作为库发布的代码中编写此代码。但是,当性能不是问题时,在您自己的程序中编写这是完全合理的。
这是一个演示。
- This is a horribly expensive piece of code. This answer really should be labeled “just kidding”.
- @cigien — spoken like a true Python programmer. <g>