string类:`reserve()`,`resize()`详解

string类的重要接口说明(1):reserve()resize()

一、reserve() 和 resize()

注意不要把 reserve(储备)reverse(逆向) 搞混了!

1.1
  • reserve():用于为字符串预留空间(扩容),以便后续操作可以直接在预留位置存放元素。

PS:

reserve(size_t n) 为string预留空间,不改变有效元素个数;当 reserve 的参数小于底层空间总大小时,reserve 不会改变容量大小

  • resize():用于调整字符串大小,包括增大和缩小字符串的大小

resize(size_t n)resize(size_t n, char c) 都是将有效字符个数改变到 n 个。不同的是:当有效字符个数增大时,前者会用 ‘\0’ 进行填充,后者用字符 c 进行填充。

1.2 resize(n) 对 string::sizestring::capacity 的影响
  • n > capacity ——> 扩容+尾插

  • size < n < capacity ——> 尾插

  • n < size ——> 删除数据,只保留前 n 个

PS:

resize() 在改变元素个数时,如果是将元素个数增加,可能会改变 capacity 的大小—— n > capacitysize < n < capacity 这两种情况;如果是将元素个数减少,则不改变 capacity 的大小—— n < size 的情况。

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值