std::string
有幾個constructors。我正在尋找一種方法來避免重新分配,我很驚訝有一個填充構造函數,但沒有「保留」構造函數。爲什麼沒有爲std :: string保留構造函數?
std::string (size_t n, char c);
但沒有
std::string (size_t n);
所以我必須調用reserve()
後,已分配的默認(對我來說16個字節),只是爲了重新分配立即呢?
有沒有這樣的構造函數來創建對象時直接保留空間的原因,而不是手動執行?或者我錯過了什麼,有什麼辦法可以做到這一點?
使用填充構造函數是在浪費時間,因爲它會遍歷內存只是被覆蓋,並且還導致了錯誤的大小,因爲s.length()
報告N
而不是0
。
你確定每個默認的16字節是保留的嗎? ('sizeof(std :: string)'與此無關) – deviantfan
@deviantfan,這是實現定義的 – SingerOfTheFall
@SingerOfTheFall是的,就像16字節一樣。我特意表示Devolus的執行 – deviantfan