STL 向量中的内存连续性:一个安全的假设
当前的问题涉及 STL 向量中元素的存储排列。具体来说,问题是假设向量的元素连续存储在内存中是否明智,以便使用第一个元素的地址安全检索后续元素。
根据 C 03 标准 ( 23.2.4.1),这个假设确实成立:
“向量的元素是连续存储的,这意味着如果 v 是一个向量,其中T 是除 bool 之外的某种类型,那么对于所有 0
这意味着之后调整向量大小时,可以安全地使用其第一个元素的地址来顺序访问其余元素。公式 &vc[n] == &vc[0] n 提供了计算后续元素的内存偏移量的可靠机制。
但是,需要注意的是,此假设仅在重新分配向量之前保持有效。向向量添加元素可能会触发重新分配操作,从而使任何现有的指针和迭代器无效。因此,在处理可能会重新分配的向量时必须谨慎行事。
以上是假设 STL 向量中的内存连续性是否安全?的详细内容。更多信息请关注PHP中文网其他相关文章!