string.reserve 與 string.resize的區別

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

    哈哈,當有疑問時,敲兩行代碼最實用了。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章