Vector 向量的内存布局<;布尔>;

Vector 向量的内存布局<;布尔>;,vector,boolean,memory-layout,Vector,Boolean,Memory Layout,有人能解释一下存储在向量中的数据的内存布局吗 从地址&myVec[0]开始,内存有什么布局?这取决于持久性吗?所有存储值的内存是否连续?(我知道vector实际上并不存储布尔值)。我可以使用memcopy将向量的内容转储到文件中以获得我的值的位图吗 请不要问“您需要它做什么”之类的问题,也不要提使用位集或boost之类的建议 感谢您的准确解释std::vector将简单地管理堆上的原始数组。因此,当您执行&myVec[0]时,您将获得此数组的第一个元素的地址。因为它是一个数组,所以它遵循原始数组

有人能解释一下存储在
向量中的数据的内存布局吗

从地址
&myVec[0]
开始,内存有什么布局?这取决于持久性吗?所有存储值的内存是否连续?(我知道
vector
实际上并不存储布尔值)。我可以使用memcopy将
向量的内容转储到文件中以获得我的值的位图吗

请不要问“您需要它做什么”之类的问题,也不要提使用位集或boost之类的建议


感谢您的准确解释

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

但是


STD::向量是一个特殊的情况,一个特定的实现,一个C++的错误,它不是一个代码的代码> Boo.<代码>,而是一个容器管理位。所以避免使用这个

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

我不确定您是否在问这个问题。

我知道,并且想知道比特使用的memorylayout。我不确定您需要什么确切信息,但数组保证是连续的内存块。除此之外,它默认遵循平台的填充规则。出于明显的原因,该标准没有提到显式内存布局,只是提供了空间效率专用化,以及如何通过引用类型模拟对单个位的访问。这是什么意思“引用类型如何模拟对单个位的访问?”引用标准:“引用是一个类,它模拟向量中单个位的引用行为“-它在std::vector的接口声明中使用,但是
vector
使用单个位来存储布尔值,我想知道这些位的顺序,这就是我要问的。那么,如果一个
向量中有13个布尔值,它们将作为13个连续位存储在内存中?
1 0 0 1 0 1 1 0