1、分配一塊大小是當前 vector 容量幾倍的新儲存空間。注意,多數 stl 版本中的 vector 容器,其容器都會以 2 的倍數增長,也就是說,每次 vector 容器擴容,它們的容量都會提高到之前的 2 倍;
2、將 vector 容器儲存的所有元素,依照原有次序從舊的儲存空間複製到新的儲存空間中;
3、析構掉舊儲存空間中儲存的所有元素;
4、釋放舊的儲存空間。
通過以上分析不難看出,vector 容器的擴容過程是非常耗時的,並且當容器進行擴容後,之前和該容器相關的所有指標、迭代器以及引用都會失效。因此在使用 vector 容器過程中,我們應盡量避免執行不必要的擴容操作。
只要有新元素要新增到 vector 容器中而恰好此時 vector 容器的容量不足時,該容器就會自動擴容。因此,避免 vector 容器執行不必要的擴容操作的關鍵在於,在使用 vector 容器初期,就要將其容量設為足夠大的值。換句話說,在 vector 容器剛剛構造出來的那一刻,就應該借助 reserve() 成員方法為其擴充足夠大的容量。
反例:
正例:vector<
int>myvector;
for(
int i =
1; i <=
1000
; i++
)//需要2^n > 1000 n次擴容
vector<
int>myvector;
myvector.
reserve
(1000);
//一次擴容
cout << myvector.
capacity()
;for
(int i =
1; i <=
1000
; i++
)//無需擴容
對一組整數進行操作 使用vector容器的方法
讀入一組整數並把它們存入乙個vector物件,對其進行以下操作,並輸出結果。include include using namespace std intmain 每對相鄰整數的和輸出出來 for decltype number.size ix 0 ix number.size ix ix 2 co...
如何使用docker對容器資源進行限制
在伺服器當中,假設iis服務部署多個站點,那麼只要其中乙個站點出問題,假設是cpu100 或者是記憶體爆滿,那麼這台伺服器上的其他站點都會跟著掛掉。同樣在使用容器時,單台主機上可能會跑幾十個容器,容器雖然都相互隔離,但是用的卻是與宿主機相同的核心,cpu 記憶體 磁碟等硬體資源。如果不對容器資源進行...
PostgreSQL 如何進行「不區分大小寫」查詢
本文翻譯自 postgresql how to make case insensitive query is there any way to write case insensitive queries in postgresql,eg i want that following 3 querie...