问题标签 [deep-copy]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1517 浏览

django - 在 Django 模型中覆盖 deepcopy

这个问题我得到了在我的 Django 模型中覆盖 deepycopy 的想法。我从那个问题中提取了代码片段,并将其放入我的模型中,并带有以下签名:

但是我也希望能够传递“字段”和“值”参数,但这不起作用。当我调用时:

尝试使用 kwargs['field'] 和 kwargs['value'] 从方法主体中提取参数时,出现以下错误:

顺便说一句,我假设我必须导入 deepcopy 方法才能使用它,我正在这样做:

这里我的理解有一些错误,提前感谢解释。

0 投票
5 回答
4298 浏览

java - Java 深拷贝库

有没有可以进行深拷贝的库?

ex) 普通对象、数组、列表、输入流等。

0 投票
5 回答
170 浏览

c# - 为什么微软没有在 BCL 中做深度克隆功能?

他们明明在什么地方用过,为什么不给出这样的方法?(即使他们没有在任何地方使用它,他们仍然可以给我们这样的方法)。

0 投票
2 回答
1282 浏览

c++ - 复制到 QMap 时出现 QString 错误。范围问题?

每当我尝试将 QString 添加到 QMap 作为我拥有的 QWidget 类的析构函数中的键时,我目前都陷入了段错误(有时是 sigabrts 由于错误的 malloc) - 我认为它与 QString 的隐式共享模型和范围。

我有一个 QWidget 作为 MDI 中的子窗口,这个 QWidget 有一些 QGLWidget 派生的视口实例作为子窗口。在子窗口中有一个包含项目文件设置的 QMap< QString, QVariant > 包装类,当子窗口关闭时,它的析构函数调用 QWidget::deleteChildren() 删除每个视口。在视口析构函数中,当前设置保存到子窗口的设置中,例如:

sWin.setSetting() 为我希望保存的每个属性调用,'sWin' 是对在子窗口析构函数末尾删除的 QMap 包装类的引用。一切都很好,直到 setSetting() 调用,这只是:

此设置适用于第一个 viewport,在第二个的第一个 setSetting() 调用中,segfault 发生在:

当我的 QString 引用传递给 QMap 时,我是否看到深拷贝失败?如果是这样,为什么?我创建的 QString 尚未超出范围,因为析构函数尚未返回。为什么这会在第二个视口而不是第一个视口上失败?

有时我会在第一个代码示例的 setSetting() 行中得到 sigabrt malloc(): memory corruption in operator+。但同样,在第二个视口的破坏开始时,不是第一个。

对于这个冗长的问题,我深表歉意,但涉及的大量代码分布在许多翻译单元中。这个问题的任何线索都会有很大的帮助!

提前致谢。凸轮


更新

我将我的第一个代码示例更改为:

作为范围问题的测试。它有时会起作用,而有时会给出完全相同的错误;所以大概堆QString被破坏了,它只取决于它的内存位置是否被覆盖。但这也没有任何意义,因为我没有在上面调用 delete,也没有关闭应用程序(只是一个 MDI 子窗口)!


更多代码

当实例化一个新的子窗口时,sWin 在堆上创建。它被带入视口类的析构函数作为来自我的子窗口中的方法的引用:

Sy_project 是(当前)QMap 的一个简单包装类。我完整的视口基类析构函数是这样的(在这里失败,不在派生类中):


瓦尔格林德

在使用 Valgrind 的 memcheck 之后,我发现了许多与我的堆栈跟踪相似的条目。以前从未使用过它,我仍在解密,但这是否是说我的 Sy_project 类(QMap 的包装器)在 setSetting() 调用已被删除,使 QMap 引用无效?

0 投票
2 回答
1738 浏览

c++ - 创建双向链表节点的深层副本

我的节点定义如下:

但是,如果我有一个节点链接到另一个节点(显然经常是这种情况),复制节点 A 将实例化下一个节点 B 的副本,而后者又会尝试实例化节点 A 的副本,这将尝试复制节点 B 等,直到出现堆栈溢出或内存错误。这可以通过仅实例化下一个(或上一个)的新副本来解决,但是之前(或下一个)链接到该节点的任何内容都不会被复制。

有没有复制双向链表节点的好方法?

0 投票
2 回答
414 浏览

c# - linq相关问题

0 投票
8 回答
14372 浏览

java - java中的clone()是浅拷贝吗?

clone()在java中是浅拷贝吗?

最终这会到达 Object(最上层类)的 clone() 方法,该方法创建一个与对象相同的类的新实例,并将所有字段复制到新实例(“浅拷贝”)。

我从维基百科读到这个。

我不明白为什么它是浅拷贝。clone()将创建一个包含所有字段的新实例。这只是一个深拷贝吗?使困惑。需要给我一些解释。

0 投票
1 回答
399 浏览

ruby - 如何复制嵌套数组并确保副本是原始数组的完整副本

是否有一种简单的方法可以复制嵌套数组,以便数组中的每个对象都是原始对象的“副本”?我最近遇到了这个:

因此,虽然第一级数组a是单个对象,但它们的内容不是,a[0][1]仍然等于b[0][1]. 一般的解决方案甚至不必知道数组嵌套的深度。遍历每一个对象并使其成为自己的副本对我来说听起来有点蛮力。

0 投票
3 回答
4760 浏览

object - 带有 Ext JS 的 jQuery 深拷贝?

我已经尝试过并且很惊讶我怎么不能使用 ExtJS。让我用一个代码块来解释。

在 jQuery 中

这是输出

Ext apply、applyIf、copyTo 不是这样工作的。如何在 ExtJS 中生成输出?

提前致谢。

0 投票
4 回答
3329 浏览

c# - 不可变对象中的浅拷贝与深拷贝

早上好,下午或晚上,

当将给定的类实现为不可变的类时,没有任何方法或属性以任何方式公开私有/内部字段,浅拷贝是一种不好的做法,还是可以毫无问题地完成,因为它可能需要实例化的对象少得多?

非常感谢。