vector <bool> </bool>的内存布局

时间:2010-11-09 23:46:41

标签: vector boolean memory-layout

有人可以解释存储在vector<bool>

中的数据的内存布局

类似内存从地址&myVec[0]向上的布局?它取决于字节顺序吗?所有存储值的内存都是连贯的吗? (我知道vector<bool>实际上并不存储布尔值。我可以使用memcopy将vector<bool>的内容转储到文件中以获取我的值的位图吗?

请不要问“你需要什么”或者使用bitsets或boost等建议。

感谢您提供准确的解释

2 个答案:

答案 0 :(得分:1)

std :: vector将简单地管理堆上的原始数组。所以你做了&amp; myVec [0]就得到了这个数组的第一个元素的地址。因为它是一个数组,它遵循原始数组的规则..

BUT

std :: vector是一个特殊情况,一个特定的实现,C ++委托的错误,它不是bool的向量,而是一个管理位的容器。所以避免使用这个。

答案 1 :(得分:1)

向量本质上是数组的包装器,所以是的,内存是连续的。这也意味着您可以在其上使用memcpy(如果这是你想要的)。

每个元素的字节序取决于您当前的架构。

vector<bool> myvector;
myvector.push_back(1);
myvector.push_back(0);
myvector.push_back(0);
myvector.push_back(1);
myvector.push_back(0);
myvector.push_back(1);
myvector.push_back(1);
myvector.push_back(0);

会在内存中显示如下:

1 0 0 1 0 1 1 0

我不确定这是不是你要问的。