gpt4 book ai didi

c++ - std::bitset 上的位扫描(bsf)?或类似

转载 作者:太空狗 更新时间:2023-10-29 20:48:10 24 4
gpt4 key购买 nike

我正在做一个涉及解决一些 NP-hard 图问题的项目。特别是贝叶斯网络的三角剖分...

无论如何,我正在使用 std::bitset 创建邻接矩阵,这非常好……但我想使用 bsf 指令扫描位集。例如。 使用 while 循环。

有人知道这是否可行吗?

最佳答案

查看 gcc 4.0.0 附带的 STL,位集方法 _Find_first_Find_next 已经完成了您想要的操作。具体来说,他们使用 __builtin_ctzl()(描述 here ),它应该使用适当的指令。 (我猜这同样适用于旧版本的 gcc。)

好消息是 bitset 已经做了正确的事情:如果它是适合单个 unsigned long 的 bitset,则为单个指令;如果它使用多个,则在多头上循环。在循环的情况下,它是一个循环,其长度在编译时是已知的,带有少量指令,因此它可能会被优化器完全展开。 IE。自己动手可能很难击败 bitset。

关于c++ - std::bitset 上的位扫描(bsf)?或类似,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3889434/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com