resize()
- 函数原型
void resize (size_type n); void resize (size_type n, const value_type& val);
- 当n<size,保留vector的前n个元素,令size=n,移除后面的元素,不改变capacity
- 当n>size&&n<capacity,扩充vector的元素个数为n个,令size=n,若指定了val,则扩充的元素都成为val的拷贝,若未指定val,则为默认值,不改变capacity
- 当n>capacity,触发内存重分配,改变capacity,令size=n,拷贝原来的值,处理val,然后销毁旧的内存空间
reserve()
- 函数原型
void reserve (size_type n);
- 当n>capacity,触发内存重分配,改变capacity,size不变,拷贝原来的值,然后销毁旧的内存空间
- 其他情况,不发生任何影响
clear()
- clear()等价于resize(0),不回收内存空间
- 想移除全部元素,同时回收内存空间,可采用:
创建一个空的临时对象(size和capacity都为0),然后交换内容,执行后vec的size和capacity都为0,vec原来的内存因为临时对象被析构而被回收vector<int> {}.swap(vec);
shrink_to_fit()
- 使capacity=size,等价于
临时对象拷贝复制vec,然后vec和临时对象交换内容,vec的capacity等于size,vec原来的内存因为临时对象被析构而被回收vector<int> {vec}.swap(vec);