我使用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 移动到它时会调用它的驱逐舰 循环中(x + 1)的'j'计数。但是通过调用 n1 并插入到向量 arrnode 中。只有在 arrnode 被销毁时它才会被销毁吗?
答案 0 :(得分:1)
只有当arrnode被销毁时它才会被销毁吗?
是。这正是std::vector
(以及标准库中的所有其他容器)在容器本身被破坏时破坏它所包含的元素的重点。
答案 1 :(得分:1)
只有当arrnode被销毁时它才会被销毁吗?
YES。 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});
}
这将使代码更清晰,更快捷。