保留記憶我讀了關於計算器這個話題很多問題。但是,我無法在其中找到我的答案。因此,這個問題。矢量的矢量,C++
我
vector< vector<int> > temp
我可以爲外部向量保留內存:
temp.reserve(20);
現在,我想保留記憶裏每個向量。我可以這樣做:
temp[i].reserve(500);
但是,如果我使用temp.clear();那麼temp的容量保持爲20. 但是,現在如果我用20個內部向量初始化臨時向量,則這些內部向量的容量將重置爲0(根據VS2010 Intellisense)。
我的問題:
我怎麼能後保留的500內部矢量能力我清楚,並重新初始化外載體?
我使用OpenCV的findContours功能。該函數清除外部矢量並用新的內部矢量集填充它。這個函數是否會導致釋放和重新分配內存?
當你調用clear()時,所有的內部向量都被銷燬。如果你想保留它們的容量,你必須爲每個內部向量調用clear()。 – VoidStar 2012-08-10 01:40:16
它甚至保證'std :: vector :: clear'保留保留的容量嗎? – jamesdlin 2012-08-10 01:54:46
是的,分配的內存沒有被釋放,只有元素被破壞,大小爲0 – VoidStar 2012-08-10 02:04:23