C++ Daily《2》----vector容器的resize 与 reserve的差别

C++ STL 库中 vector 容器的 resize 和 reserve 差别是什么?


1. resize 改变 size 大小,而 reserve 改变 capacity, 不改变size.


2. vector内部事实上包括了三个指针,

例如以下图:



resize()------改变 finish 指针

reserve()----改变 end_of_storage 指针


3. [finish, end_of_storage)中的内存是没有调用过vector中的元素的构造函数的。

所以。 例如以下的这段代码。事实上是新开一段10个 Point 的内存,可是没有调用Point 的构造函数。

vector<Point> vec;
vec.reserve(10);


此时的 vec.size() = 0. 而 vec.capaciy() = 10;



原文地址:https://www.cnblogs.com/wgwyanfs/p/6940419.html