我想知道是否可以进行以下构造:
typedef std::bitset<4> BIT4;
BIT4* x=new BIT4[3];
BIT4* y=new BIT4[5];
我的担忧是:
(1) BIT4 的数组是否合法?
(2) 如果是,指针将如何寻址这些大小为 3 和 5 的数组?这些数组的最后一个元素似乎占用了 1/2 字节,另一半刚刚丢失,我们从新字节开始下一个数组,或者它是如何工作的?
感谢您的帮助!
我想知道是否可以进行以下构造:
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 位
这是错误的,因为您最终将使用:
如果你想实现你想要的,你需要这样做:
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
如果您愿意,您当然可以动态分配它。