指向位集数组

Pointing to array of bitsets

本文关键字:数组      更新时间:2023-10-16

我想知道以下结构是否可行:

typedef std::bitset<4> BIT4;
BIT4* x=new BIT4[3];
BIT4* y=new BIT4[5];

我担心的是:

(1) BIT4的阵列是否为合法结构?

(2) 如果是,指针将如何处理这些大小为 3 和 5 的数组? 这些数组的最后一个元素似乎占用 1/2 字节,另一半只是丢失了,我们从新字节开始下一个数组还是它是如何工作的?

感谢您的帮助!

据我了解,您要做的是

对名为 x 的数组中的 3 个元素使用 12 位

对名为 y 的数组中的 5 个元素使用 20 位

这是错误的,因为您最终将使用:

  • x 为 3 字节
  • 5 字节表示 y

如果你想实现你想要的,你需要这样做:

std::bitset<4*3> x;   // this will occupy 12 + 4 Padding Bits = 2 bytes
std::bitset<4*5> y;   // this will occupy 20 + 4 Padding Bits = 3 bytes

当然,如果需要,您可以动态分配它。