加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 10:28:43 所属栏目:百科 来源:网络整理
导读:所以我有一个类似的结构 struct GetResultStructure{ int length; char* ptr;}; 我需要一种方法来制作它的完整副本,这意味着我需要一个副本,以便在原始结构中具有新的ptr指向的数据副本.有可能吗?我的意思是我拥有的任何包含ptrs的结构都会有一些字段的长度
所以我有一个类似的结构

struct GetResultStructure
{
  int length;
  char* ptr;
};

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

解决方法

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

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

GetResultStructure a = GetData();
GetResultStructure b = a; // a and b have distinct,equivalent data vectors

通常,当您需要自己实现时,可以通过实现复制构造函数和复制赋值运算符来实现.最简单的方法是使用复制和交换习语,在What is the copy-and-swap idiom?中详细介绍

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读