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