簡體   English   中英

保留向量向量的內存,c ++

[英]reserving memory for vector of vector, c++

我在stackoverflow上閱讀了很多關於這個主題的問題。 但是,我找不到任何答案。 因此,這個問題。

我有

vector< vector< int > > temp

我可以保留外部向量的內存:

temp.reserve(20);

現在,我想為每個內部向量保留內存。 我可以這樣做:

temp[i].reserve(500);

但是,如果我使用temp.clear(); 那么temp的容量保持為20.但是,現在如果我用20個內向量初始化臨界向量,這些內向量的容量將重置為0(根據VS2010智能感知)。

我的問題:

  1. 即使在清除並重新初始化外部矢量后,如何保持500的內部矢量容量?

  2. 我正在使用OpenCV findContours函數。 此函數清除外部向量並使用新的內部向量填充它。 此功能是否會導致內存重新分配和重新分配?

1)你不能在C ++中。 根據定義清除外部向量會破壞內部向量,釋放所有內存。

2)如果它正在清除外部向量並重新創建它,那么是的,它會導致重新分配,然后進行分配。

不幸的是,我無法弄清楚你的潛在問題是什么,所以我無法提供任何有關可能的解決方案的幫助。

編輯:你總是可以將外部成為存儲在池中/從池中檢索的內部向量的(可能是智能的)指針的向量。 然后當外部被清除時,只有指針本身被清除,並且合並的內部矢量仍然存在。

暫無
暫無

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

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