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');
哈哈,當有疑問時,敲兩行代碼最實用了。