使用复制构造函数创建的对象的生命周期 < >我使用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); } struct节点 { 整数和; int-min; }; 向量节点; 对于(int j=0;j
只有当arrnode被销毁时,它才会被销毁吗 是的。这正是使用复制构造函数创建的对象的生命周期 < >我使用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); } struct节点 { 整数和; int-min; }; 向量节点; 对于(int j=0;j,c++,copy-constructor,C++,Copy Constructor,只有当arrnode被销毁时,它才会被销毁吗 是的。这正是std::vector(以及标准库中的所有其他容器)的要点,当容器本身被破坏时,它会破坏它所包含的元素 只有当arrnode被销毁时,它才会被销毁吗 是。std::vector实现,当arrnode超出范围时,arrnode的所有元素都将被销毁 如果您只想用相同的值初始化arrnode,只需通过以下方式构造它: vector<node> arrnode{n, {0,0}}; 向量arrnode{n,{0,0}; 如果要使用
std::vector
(以及标准库中的所有其他容器)的要点,当容器本身被破坏时,它会破坏它所包含的元素
只有当arrnode被销毁时,它才会被销毁吗
是。std::vector
实现,当arrnode超出范围时,arrnode的所有元素都将被销毁
如果您只想用相同的值初始化arrnode
,只需通过以下方式构造它:
vector<node> arrnode{n, {0,0}};
向量arrnode{n,{0,0};
如果要使用不同的值初始化:
for(int j=0;j<n;j++)
{
arrnode.push_back({j,j});
}
for(int j=0;jin碰巧,您的整个声明+循环可以写在一条语句中:vector arrnode(n,{0,0});
(另外,它不是“destructor”,而是“destructor”。)