c++ - 在 C++ 中声明一点

标签 c++

我编写了一个对内存成本要求很高的程序,我想在不损失性能的情况下节省内存。 所以我想把每个只有两种情况的变量都变成位。

但我找不到 C++ 中的位类型,STL 中的 bitset 在 32 位机器中总是 4 字节的倍数。 编写数据结构来管理位会导致性能损失。

有没有办法像bit a;一样声明一个位值?

谢谢大家。最后我想要的答案是:“你不能在 C++ 中购买半字节”。

最佳答案

没有。最小的可寻址实体是一个字节。这是 char 或 unsigned char 类型。 (最好的类型是整数,因为它与处理器的宽度对齐,因此可以最快地获取和处理)

要使用位,您需要使用 bool 运算符并在较大类型中屏蔽/移动数据。或者使用 STL 位集。

关于c++ - 在 C++ 中声明一点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23534400/

相关文章:

c++ - 适当支持 STL 调试的 Linux IDE

c++ - 未解析的 bitset 构造函数

java - 在 C++ 和 Java 中从构造函数调用重写的方法

c++ - 弹性和 Bison : parse string without quotes

c++ - 可以在 constexpr 中获得 `__func__` 的值吗?

c++ - C++ 中的 const vector 引用参数

c++ - 使用 Visual Studio 2010 时出现错误/不正确的 C2248 错误

C++ 指针(按引用传递)问题

用于操作图像的 C++ 库

c++ - Eigen 错误 : please_protect_your_min_with_parentheses