我使用 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 循环中“j”的(x+1) 计数。但是通过调用n1 并被插入 vector arrnode。是不是只有arrnode被销毁才会被销毁?
最佳答案
Will it be destroyed only when arrnode is destroyed?
是的。 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});
}
这将使代码更简洁、更快速。
关于c++ - 使用复制构造函数创建的对象的生命周期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17771926/