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