【发布时间】:2015-12-26 23:29:33
【问题描述】:
我刚刚注意到,对于向量 push_back,它是推回对元素的引用。
void push_back ( const T& x );
我的问题是 push_back 后内存布局有变化吗?
例如,我首先有一个包含五个元素的数组,布局是这样的。
| | | | | |
| A1 | A2 | A3 | A4 | A5 |
现在我有一个向量 v
v.push_back(A3)
现在,内存是什么样子的?
vector是如何把元素存储在这里的?
vector如何访问元素?
【问题讨论】:
-
看看 vector::reserve 和 vector::capacity 的内存布局。请记住,由于内存分配可能会发生变化,一旦您修改了向量的内容,您在 push_back 调用之前拥有的任何迭代器都会失效。