【破烂集】大佬的一个技巧——bitset优化

之前大佬的题解里面用到了这个优化,还是比较实用的,特别是在大bool数组中用了这个省空间省时间(比如邻接矩阵用这个会快很多),具体的用法各种博客里面有很多,百度搜索bitset即可,在这里就不赘述,我就说一些我的测试和大佬的比较精髓的代码。
首先这个东西理论上是可以按位进行操作和定义的,所以从空间来说应该应该会节省一些,不过从测试的结果来看,这点只对大数组有效,感觉任何bitset都会至少占用64位的空间,即使是bitset<1> ,而且从时间来看也只有上了规模的bitset(上千)才会有明显的速度优势,当然是在不计算bitset的各种黑科技函数的情况下,我个人认为bitset的优势有两点,第一,任意的长度,不像bool一样一次要8个字节,而如果用long long或int这种做位运算优化的话也只能取32的倍数,最多用char是8的倍数,就很不灵活,另外由于bitset一次可以搞几千位,所以这个时候的优势就显示出来了,大数据操作的便捷是他的又一优势。
我也不太清楚bitset有什么黑科技,有心人可以深度查阅一下,不过看了大佬的代码感觉这个还挺实用的。

for(k = bit._Find_first() ; k < M ; k = bit._Find_next(k))

相当于可以用类似找lower_bit的方法找最后一位的位数,速度比一个一个找更快,相当实用

你可能感兴趣的:(破烂集)