4
通過讀取std::vector
參考我理解的是控制的std ::矢量再分配
主叫
insert
當達到最大容量將導致std::vector
(導致迭代器失效)的重新分配,因爲新的存儲器是以更大的容量分配給它。目標是保持關於連續數據的保證。只要我堅持低於最大容量
insert
將不會導致(和迭代器將完好無損)。
我的問題是:
當reserve
由insert
自動調用,有沒有什麼辦法來控制多新的內存必須如何保留?
假設我有一個初始容量爲100的向量,當最大容量被命中時,我想分配一個額外的20個字節。
有沒有可能這樣做?
我不明白這是如何明智的。對'reserve()'的調用將重新分配所有元素,然後在調用insert()時你會得到另一組副本。除此之外,'reserve()'只保證*至少*所需的大小,並且可能事實上保留更多。 – jrok
問題是我該如何控制它。這是你可以得到的最大的控制,即使它分配更多,你永遠不會得到這個if語句沒有捕獲的分配,儘管它們可能比你問的要大。 – Flexo
我的觀點是,爲什麼不讓'insert()'做它的工作? – jrok