【问题标题】:What is the cloning of the list and how to clone it?什么是列表的克隆以及如何克隆它?
【发布时间】:2013-06-17 14:16:24
【问题描述】:

假设我们有一个列表。我们如何克隆它?我创建了一个列表,其中我结合了两个列表,即 list1 和 list2。如何克隆我的组合列表?我需要在 C 编程中做到这一点

【问题讨论】:

  • 到目前为止你做了哪些努力?
  • list 是什么意思?你的结构是什么样的?

标签: c list clone


【解决方案1】:

获取列表的大小。然后创建另一个该大小的缓冲区,并使用 memcpy 将内存从列表位置复制到缓冲区。

【讨论】:

  • 当然只有当它是一个array而不是一个list时它才有效。另一个问题完全是问的人是否会在两者之间产生差异。
  • 如果它是一个列表,它会起作用。这取决于您将什么定义为复制以及您将什么定义为列表。如果它是一个链表,并且您想要复制数据,您只需将 memcopy 嵌套在指针遍历中。如果你不想要数据,你可以只 memcpy 指针。如果它是一个列表,我看不出它是如何工作的......
  • memcpy 复制字节,而不是列表的成员。如果“列表”是指在内存中连续的字节数组,那么是的。对于所有其他情况,否。
  • 列表的成员是内存中的字节,不是吗?它们甚至不必是连续的:如果你有指针,你只需复制每个指针指向的内存。那么为什么这不是在所有情况下都有效呢?
  • 请阅读您的原始答案,然后是我的评论,然后思考超过 3 秒,您就会明白我的意思了。
【解决方案2】:

@Magn3s1um 和 Jaspreet Deol 这取决于您的实施。使用 memcpy,您可以复制按顺序分配的内存(比如说一个数组)。如果您的列表是带有指针等的结构,则必须逐个节点进行。

//编辑

克隆意味着您必须创建第二个与第一个相同的对象。

EXAMPLE
list : apples>oranges>melons
list_clone : apples>oranges>melons

【讨论】:

  • 在将其作为@Magn3s1um 的其他答案的评论留下时更好地澄清
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-04-28
  • 1970-01-01
  • 2010-10-19
  • 1970-01-01
  • 1970-01-01
  • 2010-10-05
相关资源
最近更新 更多