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

时间:2012-08-10 01:18:53

标签: c++ opencv vector

我在stackoverflow上阅读了很多关于这个主题的问题。但是,我找不到任何答案。因此,这个问题。

我有

vector< vector< int > > temp

我可以为外部矢量保留记忆:

temp.reserve(20);

现在,我想为每个内部向量保留内存。我可以这样做:

temp[i].reserve(500);

但是,如果我使用temp.clear();那么temp的容量保持为20。 但是,现在如果我用20个内部向量初始化临时向量,这些内向量的容量将重置为0(根据VS2010 Intellisense)。

我的问题:

  1. 即使我清除并重新初始化外部矢量后,如何保持内部矢量容量为500?

  2. 我正在使用OpenCV findContours函数。此函数清除外部向量并使用新的内部向量填充它。此功能是否会导致重新分配和重新分配内存?

1 个答案:

答案 0 :(得分:1)

1)你不能在C ++中。按定义清除外部向量会破坏内部向量,释放所有内存。

2)如果它正在清除外部向量并重新创建它,那么是的,它会导致重新分配,然后进行分配。

不幸的是,我无法弄清楚你的潜在问题是什么,所以我无法提供任何有关可能解决方案的帮助。

编辑:你总是可以将外部成为存储在池中/从池中检索的内部向量的(可能是智能的)指针的向量。然后当外部被清除时,只有指针本身被清除,并且合并的内部向量仍然存在。