std::Vector 元素的内存连续性
有关的开发人员经常提出这样的问题:是否保证 std::vector 中的元素是连续的。此属性决定是否允许将指向第一个元素的指针视为 C 样式数组。
标准规定
最初,C 98 标准忽略指定这方面。然而,随后的技术报告 (TR) 纠正了这一疏忽,即将推出的 C 0x 标准将把它作为明确的要求纳入其中。
TR 规范
N2798,草案C 0x,假设:
“向量是支持随机访问迭代器的序列容器......元素向量的向量是连续存储的,这意味着如果 v 是一个向量,其中 T 是除 bool 之外的某种类型,那么对于所有 0
示例
基于此规范,考虑以下代码代码片段:
std::vector<int> values; // ... fill up values if( !values.empty() ) { int *array = &values[0]; for( int i = 0; i < values.size(); ++i ) { int v = array[i]; // do something with 'v' } }
C 标准通过允许直接内存访问向量的元素来保证此代码将按预期运行。
以上是C 中的 std::vector 元素内存是连续的吗?的详细内容。更多信息请关注PHP中文网其他相关文章!