gpt4 book ai didi

c++ - 没有样板复制代码的 C++ 中树数据结构的深层复制?

转载 作者:太空宇宙 更新时间:2023-11-04 11:34:02 24 4
gpt4 key购买 nike

假设我有一个用节点类实现的树数据结构:

class Node
{
Node * parent;
std::vector<Node*> children;
int data_1;
std::string data_2;
double data_3;
...
float data_n;
};

要进行深度复制,是否有任何方法可以绕过为非指针 属性编写所有样板复制?所有的

that.data_1 = this->data_1;
that.data_2 = this->data_2;
...
that.data_n = this->data_n;

我事先知道指针属性的数量很少,不会改变。但是,非指针属性更大并且随着我开发程序而波动。因此,我宁愿避免每次添加新属性时都需要记住添加此样板代码。

(我愿意使用 C++11 而不太热衷于 boost)

最佳答案

正如评论中所暗示的,您可以将数据包装在一个结构中,然后只需复制一个结构并在复制构造函数主体中处理其余的复制过程:

class Node
{
Node * parent;
std::vector<Node*> children;
//... maybe more

struct Data {
int data_1;
std::string data_2;
double data_3;
...
float data_n;
}
Data data;
Node( Node const& other) : data( other.data) {
//... do the rest
}
};

关于c++ - 没有样板复制代码的 C++ 中树数据结构的深层复制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23482274/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com