我使用c ++。假设我编写以下代码:
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);
}
我知道n1是一个局部变量,当我从xth移到
在for循环中,第(x + 1)个'j'的计数,但是调用n1的副本构造函数并将其插入向量arrnode所生成的对象呢?仅当arrnode被销毁时,它才会被销毁吗?
最佳答案
仅当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});
}
这将使代码更清洁,更快捷。