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;