簡體   English   中英

關於重新分配間隔的問題<vector>庫(C++)</vector>

[英]Question about the reallocation intervals of <vector> library (c++)

我試圖了解如何以最有效的方式在動態數組中動態分配更多空間。

所以我試圖了解如何在std::vector庫中進行重新分配。 據此

“圖書館可以實施不同的增長策略以平衡 memory 的使用和重新分配,但無論如何,重新分配只能在對數增長的大小間隔發生,以便在向量末尾插入單個元素可以提供攤銷常數時間復雜度"

“對數增長的大小區間”是什么意思? 假設我現在有一個容量為 n 的數組並且根本沒有空缺。 下一次重新分配會是什么?

此外,攤銷復雜性究竟如何變得恆定? 我真的很感激解釋它是如何比通過常數重新分配更有效的,即,假設現在我們有一個長度為 n 且沒有空位的數組,重新分配將是一個 n+常數的數組,例如 n+15。

提前致謝。

句子是錯誤的。 應該說

以指數增長的間隔

或者實際上通常使用幾何級數來實現這一點,因為它只需要在每次重新分配時將容量乘以一個常數。

幾何級數分配點的大小a^k且具有正整數k和常數因子a>1 ,總和對a^(k_max+1)/(a-1)是漸近的,並且假設k_max必須a^k_max = n ,那么我們的總復雜度最多n*a/(a-1) ,平均為常數攤銷。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM