2

有人可以解释存储在 a 中的数据的内存布局vector<bool>吗?

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

请不要提出诸如“您需要它做什么”之类的问题或使用 bitset 或 boost 之类的建议。

谢谢你的准确解释

4

2 回答 2

1

std::vector 将简单地管理堆上的原始数组。因此,当您执行 &myVec[0] 时,您将获得该数组第一个元素的地址。因为它是一个数组,所以它......遵循原始数组的规则......

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

于 2010-11-09T23:55:10.917 回答
0

向量本质上是数组的包装器,所以是的,内存是连续的。这也意味着您可以在其上使用 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

我不确定这是否是您要问的。

于 2010-11-10T00:02:35.083 回答