编程语言
首页 > 编程语言> > [C++] C++之resize和reserve

[C++] C++之resize和reserve

作者:互联网

改变容器大小,resize

增大或者缩小容器

array不支持resize

vector<int> vec(10, 1);//容器中含有10个1,size为10
vec.resize(15);//将5个值为0的元素添加到vec的末尾,size变为15
vec.resize(20, 10);//将5个值为10的元素添加到vec的末尾,size变为20
vec.resize(5);//从vec末尾删除15个元素

注意:

resize只改变容器中元素的个数,不改变容器的容量

改变容器的容量:reserve

容器中元素是连续存储的,容器的大小是可变的,向容器中添加元素:

当不得不获取新的内存空间的时候,容器的实现通常会分配比新的空间需求更大的内存,预留一些空间作为备用,这样提升了效率

管理容量的成员函数

只有当需要的内存空间大于当前容量时,reserve调用会至少分配与需求一样大的内存空间(可能更大)

如果需要的内存空间小于或者等于当前容量,reserve什么也不做

所以调用reserve永远也不会减少容器占用内存空间的大小

size和capacity

每个容器实现都有自己的内存分配策略,必须遵守原则:只有当迫不得已时,才可以分配新的内存空间

标签:容器,元素,内存空间,C++,vec,resize,reserve
来源: https://blog.csdn.net/wangmj_hdu/article/details/119539150