2013-01-11 42 views
1

什麼時候適合使用string::reserve? 我意識到它被用來爲字符串保留一定數量的字符來保存,但這怎麼可能有用呢?如果你過去了,字符串是否仍然調整大小?它是否增加了效率水平?字符串的用法:: reserve

回答

4

它將「保留」指定的空間以減少重新分配的次數。如果你對字符串的大小有了很好的瞭解,那麼保留這個空間就可以防止重新分配。

如果你過去了,它會調整大小,但是想法是減少重新分配的次數。

+1

它有點像'char str [50] ='我的字符串';',除了包裝在字符串容器中,如果超過50個字符,還有一個機制可以重新分配(以及所有其他實用程序帶字符串類)。 – crush

+4

它也會減少堆的碎片。如果使用通常足夠大的固定大小分配並釋放大量字符串,則意味着在釋放第一個字符串後,可以很容易地重新使用下一個字符串。 –