从long转换的C ++位集构造函数的复杂性是什么?

时间:2018-08-27 13:45:45

标签: c++ time-complexity bitset std-bitset

我的猜测是O(n),其中n是否。位。还是恒定不变n?我的意思是它不应该能够从内存中复制位吗?

1 个答案:

答案 0 :(得分:8)

从数学上讲,long具有固定长度,因此复制其内容是恒定时间的操作。另一方面,您需要将位集中的其余位清零,并且就位长度而言,您不能在少于线性的时间内完成操作。因此,从理论上讲,您不能做得比O(n)好,其中n是位集的长度。

我认为,从渐近复杂性的角度来看,您可以放心地假设构造函数的复杂性与将分配的内存清零相同。

但是,该分析仅对n的巨大值有用,对于我来说,使用长构造函数初始化一百万个位的位集对我而言没有多大意义。因此,如果位集的大小与long的大小相同,则实际上是恒定时间。