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');  

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

猜你喜欢

转载自blog.csdn.net/qq_34977392/article/details/78239892
今日推荐