我有以下结构
struct myStruct
{
// other stuff
std::vector< myDataType > v_Data;
};
我们假设我将此结构声明为
myStruct a;
然后尝试将一些数据推送到v_Data。如果我尝试这样做
for(int i = 0; i < some_size; ++i)
a.v_Data.push_back(something);
程序变得非常缓慢(到了它没有响应的程度,我必须终止进程)并且内存消耗也会增加。但是,如果我这样做的话
std::vector< myDataType > tmp;
for(int i = 0; i < some_size; ++i)
tmp.push_back(something);
a.v_Data = tmp;
然后它的工作原理。我对于为什么会发生这种情况一无所知,因为后一种方法明显比前者消耗更多的内存。 有人可以帮我澄清一下吗?
[编辑]
正如Maxim在下面的评论部分所建议的那样,在插入容器之前清除容器解决了问题。所以代码应该是
a.v_Data.clear();
for(int i = 0; i < some_size; ++i)
a.v_Data.push_back(something);