標籤:

《C++ Primer》讀書筆記-第九章 04 vector對象增長

這恐怕是第九章最簡單的一個小節了。內容比較少,咱們也就不多說廢話了,直接上。

聲明:

  • 文中內容收集整理自《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》有哪些區別?

TAG:C | LeetCode | CPrimer |