有人可以解释存储在 a 中的数据的内存布局vector<bool>
吗?
就像内存从地址&myVec[0]
向上有什么布局?它取决于字节顺序吗?所有存储值的内存是否连续?(我知道这vector<bool>
实际上并不存储布尔值)。我可以使用 memcopy 将 a 的内容转储vector<bool>
到文件中以获取我的值的位图吗?
请不要提出诸如“您需要它做什么”之类的问题或使用 bitset 或 boost 之类的建议。
谢谢你的准确解释
有人可以解释存储在 a 中的数据的内存布局vector<bool>
吗?
就像内存从地址&myVec[0]
向上有什么布局?它取决于字节顺序吗?所有存储值的内存是否连续?(我知道这vector<bool>
实际上并不存储布尔值)。我可以使用 memcopy 将 a 的内容转储vector<bool>
到文件中以获取我的值的位图吗?
请不要提出诸如“您需要它做什么”之类的问题或使用 bitset 或 boost 之类的建议。
谢谢你的准确解释
std::vector 将简单地管理堆上的原始数组。因此,当您执行 &myVec[0] 时,您将获得该数组第一个元素的地址。因为它是一个数组,所以它......遵循原始数组的规则......
但
std::vector 是一种特殊情况,一种特定的实现,是 C++ 委员会的一个错误,它不是一个向量,bool
而是一个容器管理位。所以避免使用这个。
向量本质上是数组的包装器,所以是的,内存是连续的。这也意味着您可以在其上使用 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
我不确定这是否是您要问的。