姓名:王海桐? 學(xué)號:21021211072? 學(xué)院:電子工程學(xué)院
友友你是否也經(jīng)常將string類中的reserve和resize接口傻傻分不清楚斯棒,時不時用混導(dǎo)致出錯呢?
那現(xiàn)在讓我們一起解決它吧主经!
string::resever
只改變capacity的值,不改變size的大小
string::resize
在增容時會將增容部分全部填充為“/0”荣暮,capacity改變的同時size也會改變。
使用resever進行增容時:
resize和reverse接口都不使用罩驻,自動增容時:
使用resize進行增容時:
至于增容的規(guī)律穗酥,不同的編譯庫都是實現(xiàn)STL,但是要注意他們要按c++標(biāo)準(zhǔn)去實現(xiàn)string、vector等砾跃。具體底層如何實現(xiàn)骏啰,比如插入數(shù)據(jù)如何增容等等,是他們實現(xiàn)人決定的抽高,不同的平臺可能不同判耕。
補充點小知識:
關(guān)于直接輸出和用c_str接口輸出的區(qū)別
既然接口不能全部輸出,那是不是就沒用呢厨内?
當(dāng)然不是啦祈秕,有些特殊情況下只能使用c_str接口輸出渺贤,比如下面的情況:
活學(xué)活用:我們就用string::c_str()驗證一下resize和reverse的關(guān)于“/0”填充的區(qū)別吧雏胃,源代碼如下
使用reserve運行效果:
使用resize運行效果:
了解了STL中string類的這么多有趣玩法,各位友友是不是躍躍欲試了呢志鞍?