问题标签 [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.
django - 在 Django 模型中覆盖 deepcopy
从这个问题我得到了在我的 Django 模型中覆盖 deepycopy 的想法。我从那个问题中提取了代码片段,并将其放入我的模型中,并带有以下签名:
但是我也希望能够传递“字段”和“值”参数,但这不起作用。当我调用时:
尝试使用 kwargs['field'] 和 kwargs['value'] 从方法主体中提取参数时,出现以下错误:
顺便说一句,我假设我必须导入 deepcopy 方法才能使用它,我正在这样做:
这里我的理解有一些错误,提前感谢解释。
java - Java 深拷贝库
有没有可以进行深拷贝的库?
ex) 普通对象、数组、列表、输入流等。
c# - 为什么微软没有在 BCL 中做深度克隆功能?
他们明明在什么地方用过,为什么不给出这样的方法?(即使他们没有在任何地方使用它,他们仍然可以给我们这样的方法)。
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 引用无效?
c++ - 创建双向链表节点的深层副本
我的节点定义如下:
但是,如果我有一个节点链接到另一个节点(显然经常是这种情况),复制节点 A 将实例化下一个节点 B 的副本,而后者又会尝试实例化节点 A 的副本,这将尝试复制节点 B 等,直到出现堆栈溢出或内存错误。这可以通过仅实例化下一个(或上一个)的新副本来解决,但是之前(或下一个)链接到该节点的任何内容都不会被复制。
有没有复制双向链表节点的好方法?
java - java中的clone()是浅拷贝吗?
clone()
在java中是浅拷贝吗?
最终这会到达 Object(最上层类)的 clone() 方法,该方法创建一个与对象相同的类的新实例,并将所有字段复制到新实例(“浅拷贝”)。
我从维基百科读到这个。
我不明白为什么它是浅拷贝。clone()
将创建一个包含所有字段的新实例。这只是一个深拷贝吗?使困惑。需要给我一些解释。
ruby - 如何复制嵌套数组并确保副本是原始数组的完整副本
是否有一种简单的方法可以复制嵌套数组,以便数组中的每个对象都是原始对象的“副本”?我最近遇到了这个:
因此,虽然第一级数组a
是单个对象,但它们的内容不是,a[0][1]
仍然等于b[0][1]
. 一般的解决方案甚至不必知道数组嵌套的深度。遍历每一个对象并使其成为自己的副本对我来说听起来有点蛮力。
object - 带有 Ext JS 的 jQuery 深拷贝?
我已经尝试过并且很惊讶我怎么不能使用 ExtJS。让我用一个代码块来解释。
在 jQuery 中
这是输出
Ext apply、applyIf、copyTo 不是这样工作的。如何在 ExtJS 中生成输出?
提前致谢。
c# - 不可变对象中的浅拷贝与深拷贝
早上好,下午或晚上,
当将给定的类实现为不可变的类时,没有任何方法或属性以任何方式公开私有/内部字段,浅拷贝是一种不好的做法,还是可以毫无问题地完成,因为它可能需要实例化的对象少得多?
非常感谢。