我正在查看std::vector代码,发现了一些不太理解的地方。当capacity < size() + 1时,需要重新分配缓冲区以便插入新元素。它所做的事情(根据我从代码中提取出来的)是:
- 分配新缓冲区
- 复制旧缓冲区的前缀(0 - 插入索引)
- 在新缓冲区中构造新元素
- 复制旧缓冲区的后缀(插入索引 - 结尾)
- 调用旧缓冲区中所有项目的析构函数
- 释放旧缓冲区