0

I use c++. Suppose I write the following code:

struct node
{
    int sum;
    int min;
};

vector<node> arrnode;

for(int j=0;j<n;j++)
{
     node n1;

     n1.sum=0;
     n1.min=0;
     arrnode.push_back(n1);
}

I know that n1 is a local variable and its destroyer is called when I move from xth to (x+1)th count of 'j' in the for loop.But what about the object which is made by invoking copy constructor of n1 and is inserted into the vector arrnode. Will it be destroyed only when arrnode is destroyed?

4

2 回答 2

1

只有当arrnode被销毁时才会被销毁?

是的。这正是std::vector(以及标准库中的所有其他容器)在容器本身被破坏时破坏它所包含的元素的要点。

于 2013-07-21T11:40:58.833 回答
1

只有当arrnode被销毁时才会被销毁?

是的。std::vector实现RAII idiom ,当arrnode超出范围时, arrnode的所有元素都将被销毁。

如果您只想arrnode使用相同的值进行初始化,只需通过以下方式构造它:

vector<node> arrnode{n, {0,0}};

如果要使用不同的值进行初始化:

for(int j=0;j<n;j++)
{
   arrnode.push_back({j,j});
}

这将使代码更简洁、更快捷。

于 2013-07-21T11:43:25.060 回答