《C++ Primer》讀書筆記-第九章 04 vector對象增長
02-05
這恐怕是第九章最簡單的一個小節了。內容比較少,咱們也就不多說廢話了,直接上。
聲明:
- 文中內容收集整理自《C++ Primer 中文版 (第5版)》,版權歸原書所有。
- 原書有更加詳細、精彩的釋義,請大家購買正版書籍進行學習。
- 本文僅作學習交流使用,禁止任何形式的轉載
正文
為了支持快速隨機訪問,vector中的元素是連續存儲的(連續的內存空間)
前面提到了,向vector中添加元素,有可能導致整個容器內存空間的重新分配
為了減少容器空間重新分配的次數,每次不得不獲取新的內存空間時,都會分配比實際需求更大的內存空間(2倍?)
這一策略保證了vector的擴張操作通常比list和deque還要快
管理容器
c.shrink_to_fit() nc.capacity() nc.reserve( n )n
capacity 不重新分配內存空間的話,還可以保存多少個元素
reserve 分配至少容納n個元素的內存空間shrink_to_fit() 請求將capacity減少為與size相同,但請求可能被忽略,依賴於具體實現
reserve(n),如果n小於實際容量,什麼也不做,reserve不會減少容器佔用的內存空間
resize 只改變容器中元素的數目,而不是容器的容量shrink_to_fit 只適用於vector、string和deque
capacity和reserve只適用於vector和string
本文僅發佈於:
微信公眾號:馬志峰的編程筆記
知乎專欄:知乎專欄推薦閱讀:
※如何理解c++primer中關於auto的說明?
※為什麼c++要「在頭文件中聲明,在源文件中定義」?
※新手自學C++ Primer(第五版)應該用什麼開發環境?
※C++ 里刪delete指針兩次會怎麼樣?
※《C++ Primer》和《C++ Primer Plus》有哪些區別?