有人可以解释存储在vector<bool>
?
类似内存从地址&myVec[0]
向上的布局?它取决于字节顺序吗?所有存储值的内存都是连贯的吗? (我知道vector<bool>
实际上并不存储布尔值。我可以使用memcopy将vector<bool>
的内容转储到文件中以获取我的值的位图吗?
请不要问“你需要什么”或者使用bitsets或boost等建议。
感谢您提供准确的解释
答案 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
我不确定这是不是你要问的。