对于我正在研究的项目,我需要为bitset创建自己的实现。我已经看了一下STL库,看看他们是如何处理这个问题的,并在网上看了一些其他的东西。看起来使用char数组非常标准。有没有理由为什么每个人都使用char数组而不是整数类型?
答案 0 :(得分:4)
仅仅因为C ++中的char
是单个字节,(或者至少,C ++标准保证它的大小小于或等于int
或short
)而int
的大小通常大于一个字节。 (现在大多数机器上通常是32位或4字节。)由于单个字节是计算机可以处理的最小可寻址数据单元,因此在使用时char
的数组是很自然的。个别位。例如,如果您使用int
,那么您将浪费大量空间用于任何不是sizeof(int)
的倍数的位,但是使用字节数组会浪费尽可能少的空间。< / p>
答案 1 :(得分:1)
Char(通常)是微处理器可以操作的最小位单位。如果您正在创建一个使用任意位数的对象,则使用最小单位的数组是有意义的。这样你总是使用最少的单位。
如果您需要非任意大小的位集并且处理器具有足够大的本机类型以包含它,请使用N位类型。它比数组更有效。