保留记忆我读了关于计算器这个话题很多问题。但是,我无法在其中找到我的答案。因此,这个问题。矢量的矢量,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