c – 测试固定集是否相等而没有分支
发布时间:2020-12-16 09:33:21 所属栏目:百科 来源:网络整理
导读:我有一组整数(x,y,z)和一个取3个整数(u,v,w)的函数.如何测试if(x,z)==(u,w)?天真的方式是: bool match = (x == u || x == v || x == w) (y == u || y == v || y == w) (z == u || z == v || z == w); 有没有人知道一些智能位操作/算术做同样的事情? 编辑
我有一组整数(x,y,z)和一个取3个整数(u,v,w)的函数.如何测试if(x,z)==(u,w)?天真的方式是:
有没有人知道一些智能位操作/算术做同样的事情? 编辑:我可以假设(x,z)或(u,w)都不包含重复项. 解决方法
在这种情况下,您可以通过按位运算替换逻辑运算以消除分支:
bool match = (x == u | x == v | x == w) & (y == u | y == v | y == w) & (z == u | z == v | z == w); 但是,您必须测量性能效果以查看它是更快还是更慢. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |