[英]Address of std::vector itself stable?
如果我获取std::vector
的地址,并在插入元素后重新分配,我可以假设它的地址不会改变吗?
谢谢。
是的,在C ++中你可以放心地假设。 但是,第一个元素&x[0]
地址可以改变,这些地址不相同。 编辑:当然,其他元素的地址也是如此。
顺便说一下,第一个元素的地址是否可能保持或多或少稳定取决于数组的增长因子是否小于黄金比例 ,这对于了解IMO来说是一个非常酷的事实。
如果我获取
std::vector
的地址,并在插入元素后重新分配,我可以假设它的地址不会改变吗?
你实际上总是可以假设某个变量的地址没有改变,因为它调用了它的任何行为(这是不可能的,因为语言语法会阻止它。你不能简单地用任意值替换this
)。
重新分配是std::vector
的行为,它适用于它的底层数据结构(即std::vector::data()
),并且从这些重载中获取的指针对于此行为是不稳定的并且可能会更改(对于任何其他地址都相同)例如来自ptr = &myVector[5];
)的偏移量。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.