簡體   English   中英

控制std :: vector重新分配

[英]Control over std::vector reallocation

通過閱讀std::vector引用我明白了

  1. 當達到最大容量時調用insert將導致重新分配std::vector (導致迭代器失效),因為為其分配了更大容量的新內存。 目標是保證連續數據的保證。

  2. 只要我堅持低於最大容量insert就不會導致(並且迭代器將完好無損)。

我的問題如下:

reserve被自動調用insert ,有沒有什么辦法來控制多新的內存必須如何保留?

假設我有一個初始容量為100的向量,當達到最大容量時,我想分配額外的20個字節。

有可能嗎?

您可以隨時自行跟蹤並在分配之前調用預留,例如

static const int N = 20 // Amount to grow by
if (vec.capacity() == vec.size()) {
  vec.reserve(vec.size() + N);
}
vec.insert(...);

您可以將它包裝在您自己的函數中並調用該函數,而不是直接調用insert()

暫無
暫無

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

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