我编写了一个对内存成本要求很高的程序,我想在不损失性能的情况下节省内存。 所以我想把每个只有两种情况的变量都变成位。
但我找不到 C++ 中的位类型,STL 中的 bitset
在 32 位机器中总是 4 字节的倍数。
编写数据结构来管理位会导致性能损失。
有没有办法像bit a;
一样声明一个位值?
谢谢大家。最后我想要的答案是:“你不能在 C++ 中购买半字节”。
最佳答案
没有。最小的可寻址实体是一个字节。这是 char 或 unsigned char 类型。 (最好的类型是整数,因为它与处理器的宽度对齐,因此可以最快地获取和处理)
要使用位,您需要使用 bool 运算符并在较大类型中屏蔽/移动数据。或者使用 STL 位集。
关于c++ - 在 C++ 中声明一点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23534400/