Rem*_*i.b 10 c++ memory byte boolean bit
考虑一个具有许多bool属性的类
class A
{
bool a;
bool b;
bool c;
bool d;
bool e;
bool f;
};
Run Code Online (Sandbox Code Playgroud)
虽然每个bool对象可以用一个位表示,但这里每个属性都需要一个字节(如果我没有记错的话).该对象将占用6个字节而不是仅仅1个字节(其中将实际使用6个字节).原因是位不可寻址,只有字节.
为了使存储器稍微冷凝,可以使用a vector<bool>或a bitset然后通过它们的索引访问属性.例如,可以将get函数编写为
bool A::get_d() {data[3];}
Run Code Online (Sandbox Code Playgroud)
理想情况下,我希望能够直接访问属性InstanceOfA.d.是否可以这样做,同时确保我的所有6个bool都在同一个字节内被压缩?
Phi*_*l M 12
您可以使用位域.与Repl.it的gcc版本4.6.3一起使用.
#include <iostream>
struct Test
{
bool a:1;
bool b:1;
bool c:1;
bool d:1;
bool e:1;
bool f:1;
bool g:1;
bool h:1;
//bool i:1; //would increase size to 2 bytes.
};
int main()
{
Test t;
std::cout << sizeof(t) << std::endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
200 次 |
| 最近记录: |