在c / c++中,我们可以在内存中定义一个1位的变量:就像unsigned char value : 1一样;

有没有办法声明一个1位元素的数组?就像下面的sudo代码一样:

unsigned char : 1 data[10];

最佳答案

问题在于,在大多数实现中,1位变量仍将占用1字节的内存,因为这是解决内存的方式。但是,如果您有大量此类值,则可以解决此问题。一种这样的解决方案是std::bitset。您可以像这样制作一个:

#include <bitset>
std::bitset<64> data;

您可以使用setresetflip操作(将其设置为1、0或进行切换)来操作位。例如,您可以使用[]进行访问
if (data[5]) { ...

看看一个不错的示例here

09-30 20:36