【STL】 vector之 resize 和 reserve函数

引言

在vector 中有 size() 和 capacity() 两个概念。

size()是容器中实际的元素个数有多少(大小);capacity() 是容器的最大可存储空间。 resize() 改变的是元素个数的大小,reserve()改变的是存储空间。 存储空间大于等于元素个数大小。

resize

void resize (size_type n, value_type val = value_type());

  • 用来改变vector的大小(即size),即vector中元素的数量。
  • 如果resize中指定的n小于当前的大小,则删除元素,只留下n个元素。
  • 如果所指定的n大于当前元素数量,则在尾部插入适合的元素,将size(),扩大至n。如果指定了第二个参数,则使用该参数追加。如果没有指定,使用默认参数–0。
  • 如果n大于了当前容量的大小(capacity),则重新分配存储空间。

reserve

void reserve (size_type n);

  • 该方法用来重新分配容量的大小。
  • 只有申请大于原来的容量时,才会重新分配存储空间。否则不会改变原来的容量大小。
  • 该方法不影响vector的大小(即size)。

区别与联系

  1. 使用resize方法时,改变了vector中元素的个数,即vector的大小,但不会改变vector的容量大小;

  2. 如果resize中所指定的n小于vector中当前的元素数量,则会删除vector中多于n的元素,使vector得大小变为n;如果resize指定的大小n小于vector当前的大小时,会减小vector的大小,但无论resize中是否指定初始化值,都不会影响vector中原本已经存在的元素值;

  3. 当resize中所指定的n大于vector当前的大小,但是小于vector当前的容量大小时,会在vector后面插入适量的元素,使得vector的大小满足n,如果指定了初始值,则会把新插入的元素初始化为指定的初始值,如果没有指定初始值,则将会把新插入的元素初始化为默认初始值,即0;

  4. 当resize中所指定的n大于vector当前的大小,并且大于vector当前的容量大小时,会为vector重新分配存储空间。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值