复制嵌套矢量的最简单方法是什么
What is the easiest way to copy a nested vector
在我的代码中,我有一个名为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;
框中的数据是否会通过应用于nBox的更改而更改?
这是珠子的定义:
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参数以及一组操作它的函数
我想你指的是
boxes = nBoxes;
最后。
矢量的CCD_ 6复制CCD_。也就是说,在您的情况下,它将指针复制到bead
。珠子对象本身不会被深度复制。
存储在。。。将正确地复制到您的作业表达式上。
但是存储在矢量中的数据只是指针!因此,无论何时从一个向量更改bead
数据,都会在两个向量中进行更改,因为两个向量都只包含指向单个内存位置的指针。
nBoxes = boxes;
将制作CCD_ 10矢量的完整副本。对nBoxes
的内容所做的任何更改都不会影响boxes
的内容。
但是:如果您对bead*
指针指向的bead
对象进行了更改,那么这些更改也将在boxes
向量中看到。如果你想避免这种情况,你需要对向量进行深度复制。
最好忘记嵌套向量,实现一个自定义类,覆盖operator=并按照您的意愿行事(复制子向量(
第二个想法是使用vector< vector< vector <vector <bead> > > > boxes;
相关文章:
- 当无法使用模板和宏时,生成类型变体C++代码的最简单方法是什么?
- 在OSX上使用CMake将Adobe的XMP工具包构建为共享库的最简单方法是什么?
- 通过比较C++中的行在 txt 文件中搜索的最简单方法是什么?
- 将时间戳打印到流的最简单方法
- 在C++中创建文件夹选取器对话框的最简单方法是什么?
- boost::variant - 对变体应用算术的最简单方法
- 创建可以遍历 std::map 值的通用模板迭代器的最简单方法是什么?
- 在C++中将算术类型转换为 std::array 的最简单方法<uint8_t>
- C++-将ASCII字符数组中可能的数值转换为字符的最简单方法
- 从 txt 文件中读取数据的最简单方法
- 根据浮点符号对浮点进行舍入的最简单方法是什么
- 对于我扩展此程序来计算最高10x10矩阵的倒数的最简单方法是什么
- C++98 中获取并继续调用当前类不知道的类方法的最简单方法是什么?
- 编写要在 Python 中使用的并行 C/C++ 模块的最简单方法
- 开放式颜色多边形表面的最简单方法
- 确定代码中当前程序集是否为 32/64 位的最简单方法
- 将unique_ptr存储在堆上的最简单方法是什么
- 使用 C# 获取 OpenGL 版本的最简单方法
- 在自定义 C/C++ 程序中获取 PPP0 接口 Tx/Rx 字节的最简单方法是什么?
- 为depth_first_search定义颜色图的最简单方法