使用struct时具有不同行为的相同数据结构

时间:2017-05-19 16:29:39

标签: c++ oop memory vector struct

我有以下结构

    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);

0 个答案:

没有答案