string中有两个函数:reserve()和resize(),最近细细的看了下这两个函数的使用,记录下来。
reserve为容器预留足够的空间,避免不必要的重复分配,分配空间大于等于函数的参数,影响capacity。
resize调整容器中有效数据区域的尺寸,如果尺寸变小,原来数据多余的截掉。若尺寸变大,不够的数据用该函数第二个参数填充,影响size。
(1)reserve代码如下:
string str3 = "smiada";
str3.reserve(20);为str3初始分配空间,15。
调用reserve()函数后,空间变为31,即保留空间变大了(string内存分配按照:(n*16-1)分配)。
(2)resize代码如下:
a、尺寸变小
string str3 = "smiada";
str3.resize(2);
尺寸由6改变为2,多余字符被截掉了,结果如下:
b、尺寸变大,可以给一个填充参数。尺寸由6变大到10,4个空位填充b(默认参数为0,即NULL或者'\0')。;
string str3 = "smiada";
str3.resize(10,'b'); 哈哈,当有疑问时,敲两行代码最实用了。
本文详细介绍了C++标准库string类中的reserve与resize方法的区别及使用场景。reserve用于预留足够空间减少内存重新分配,resize则调整容器有效数据大小并可指定填充字符。
1183

被折叠的 条评论
为什么被折叠?



