加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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)?天真的方式是:

bool match = (x == u || x == v || x == w) && (y == u || y == v || y == w) && (z == u || z == v || z == 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);

但是,您必须测量性能效果以查看它是更快还是更慢.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读