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

  • Post author:
  • Post category:其他



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


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


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


(1)reserve代码如下:



  1. string str3 =


    “smiada”


    ;


  2. str3.reserve(20);


为str3初始分配空间,15。



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



(2)resize代码如下:


a、尺寸变小



  1. string str3 =


    “smiada”


    ;


  2. str3.resize(2);



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



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



  1. string str3 =


    “smiada”


    ;


  2. str3.resize(10,

    ‘b’


    );




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