如何使用指向内部数据的指针复制结构(以便复制指向它们的指针和数据)?

Rel*_*lla 3 c++ memory boost data-structures

所以我有一个类似的结构

struct GetResultStructure
{
  int length;
  char* ptr;
};
Run Code Online (Sandbox Code Playgroud)

我需要一种方法来制作它的完整副本,这意味着我需要一个副本,以便在原始结构中具有新的ptr指向的数据副本.有可能吗?我的意思是我所拥有的任何包含ptrs的结构都会有一些字段,其长度我需要一个函数来复制我的结构,通过给定的长度数组来处理所有ptrs和数据...任何很酷的增强函数吗?或者任何方式如何创建这样的功能?

Jam*_*lis 7

对于您描述的特定方案,请使用一个std::vector或其他序列容器.如果这样做,那么简单地复制类型的对象GetResultStructure也会复制指向的数据:

struct GetResultStructure {
    std::vector<char> data;
};

GetResultStructure a = GetData();
GetResultStructure b = a; // a and b have distinct, equivalent data vectors
Run Code Online (Sandbox Code Playgroud)

通常,当您需要自己实现时,可以通过实现复制构造函数和复制赋值运算符来实现.最简单的方法是使用复制和交换习惯用法,详细介绍了什么是复制和交换习惯用法?