c++ - 如何在 C++ 中创建一个大小为 1 位的元素数组

标签 c++ arrays bit bit-fields

在c/c++中,我们可以在内存中定义一个1位的变量:like 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 .

关于c++ - 如何在 C++ 中创建一个大小为 1 位的元素数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53494706/

相关文章:

delphi - 逐位读取字节 - 简化/加速建议 - Delphi

java - 如何将某个值与数组中的值进行比较?

c++ - 仅通过指针转换创建可互换的类类型,而无需分配任何新对象?

c - 在 C 中设置最低有效位

c++ - 对双向链表进行操作时要注意什么?

javascript - 从多个对象中获取特定的键和值

javascript - 如何使用 jQuery 将多维字符串数组转换为 float ?

c++ - 静态与动态数组 C++

c++ - CRecordset::snapshot 在 VS2012 中不再起作用——有什么选择?

c++ - Win32 "move"能否堆分配内存?