我有一组整数 (x, y, z) 和一个接受 3 个整数的函数 (u, v, w)。如何测试 (x,y,z) == (u,v,w)?天真的方法是:
bool match = (x == u || x == v || x == w) && (y == u || y == v || y == w) && (z == u || z == v || z == w);
有人知道一些智能位运算/算术来做同样的事情吗?
编辑:我可以假设 (x, y, z) 或 (u, v, w) 都不包含重复项。
最佳答案
在这种情况下,您可以将逻辑运算替换为按位运算以消除分支:
bool match = (x == u | x == v | x == w)
& (y == u | y == v | y == w)
& (z == u | z == v | z == w);
但是,您必须测量性能影响以查看这是更快还是更慢。
关于c++ - 在没有分支的情况下测试固定集是否相等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5252039/