【发布时间】:2011-07-27 09:35:15
【问题描述】:
在我的代码中,我有一个名为 bead 的结构。我有一个向量,定义为
vector< vector< vector <vector <bead*> > > > boxes
有时,我需要对boxes 进行一些更改,我可能需要恢复这些更改。
如果我执行以下操作会发生什么:
vector< vector <vector <vector <bead*> > > > nBoxes;
nBoxes = boxes;
....
//some code that resizes the forth nest in nBoxes and create new content
....
boxes = nBoxes;
box 中的数据是否会通过应用于 nBoxes 的更改而更改?
这里是珠子的定义:
struct bead{
particle mainPart;
int charge;
int type;
double rho;
double nextRho;
int LID;
double U;
double nextU;
bool touch;
};
这需要particle的定义
struct particle{
vec pos;
vec oldPos;
vec vel;
vec oldVel;
vec F;
vec oldF;
};
vec 是一个类,它包含一个 velarray 参数以及一系列用于操作它的函数。
【问题讨论】:
-
所有这些嵌套的目的到底是什么?
-
复制向量的最简单的方法是复制向量。分配始终是复制的最佳选择。请注意,您在容器中使用裸指针。通常这不是一个好主意。那些珠子是动态分配的吗?谁拥有它们?
-
Karl 嵌套是为了说明一些坐标为 x,y,z 的坐标,其中包含 n 个珠子的向量。 @sbi,是的,珠子是动态分配的,它们保存在不同的向量中。
标签: c++ stl copy-constructor