c++ string中的reserve()和resize()

string中有两个函数:reserve()和resize(),最近细细的看了下这两个函数的使用,记录下来。

    reserve为容器预留足够的空间,避免不必要的重复分配,分配空间大于等于函数的参数,影响capacity。

    resize调整容器中有效数据区域的尺寸,如果尺寸变小,原来数据多余的截掉。若尺寸变大,不够的数据用该函数第二个参数填充,影响size。

(1)reserve代码如下:

[cpp]  view plain  copy
  1. string str3 = "smiada";  
  2. str3.reserve(20);  
为str3初始分配空间,15。

调用reserve()函数后,空间变为31,即保留空间变大了(string内存分配按照:(n*16-1)分配)。


(2)resize代码如下:

a、尺寸变小

[cpp]  view plain  copy
  1. string str3 = "smiada";  
  2. str3.resize(2);  

 
尺寸由6改变为2,多余字符被截掉了,结果如下: 
 

b、尺寸变大,可以给一个填充参数。尺寸由6变大到10,4个空位填充b(默认参数为0,即NULL或者'\0')。;

[cpp]  view plain  copy
  1. string str3 = "smiada";  
  2. str3.resize(10,'b');  

    哈哈,当有疑问时,敲两行代码最实用了。

  • 16
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值