通常,在C++中,在创建数组时,我将其声明为int.但是,由于我只处理二进制数(仅限1和0),我认为可以将4字节'int'转换为1位.
例如
int array1[] = {1,0,0,0,0,1,0}; // -----had total of 32 bytes
因为它只是二进制,所以内存效率只有1/32,因为每个int 1将存储为000000000000000000000000000001
(4字节).
所以我的问题是如何将所有这些转换为比特,以便32个字节可以"压缩"为1个字节(而不是8个32字节的int,我想要8位数据)?
使用std :: bitset.我想这就是你想要的.
我不知道你是否是一个有竞争力的程序员,但有时在竞争性编程中,它需要有10 ^ 9个标志.然后bitset
或在筛子的最佳决定中,这是非常有帮助的.
#include... ... bitset<10000000> bs; .. bs[1]=1; bs[i]=0; ..etc