问题标签 [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.
delphi - 带有 R1:=R2 的记录的深拷贝,或者有没有用记录实现 NxM 矩阵的好方法?
我正在实现一个带有记录和内部动态数组的 N x M 矩阵(类),如下所示。
我选择了一条记录,因为我不想创建/释放/分配来使用它。
但是对于动态数组,值不能用 M1 := M2 而不是 M1.Assign(M2) (深度)复制。
我试图声明自隐式转换方法,但它不能用于 M1:=M2。
(隐式(const pA:PMat):TMat 和 M1:=@M2 有效,但它非常丑陋且不可读..)
有没有办法挂钩记录的分配?
或者有什么建议用记录实现 N x M 矩阵?
提前致谢。
编辑:
我用 Barry 的方法实现了如下所示并确认工作正常。
我同意它没有效率。仅将 Assign 与纯记录一起使用绝对更快。
但它非常方便且更具可读性。(而且很有趣。:-)
我认为它对于光计算或预生产原型很有用。不是吗?
编辑2:
kibab提供了获取动态数组本身的引用计数的函数。
Barry 的解决方案更独立于内部 impl,并且可能无需任何修改即可在即将推出的 64 位编译器上工作,但在这种情况下,我更喜欢 kibab 的简单和高效。谢谢。
java - 线性链表的深拷贝
我有一个由节点组成的线性链表:
我想制作一个列表的深层副本。然后递增原始列表的每个节点并打印两者。我不知道代码是否正确。
...第二次 println 只给我 123,但副本有问题。有任何想法吗?
更新:
java - 反转线性链表
线性链表是一组节点。这是一个节点的定义方式(为了简单起见,我们不区分节点和列表):
我能够制作列表的深层副本。现在我想反转列表,以便第一个节点是最后一个,最后一个是第一个。倒排列表必须是深拷贝。
我开始开发反转功能,但我不确定。有任何想法吗?
更新:也许有一种递归方式,因为线性链表是一种递归数据结构。
我会取第一个元素,遍历列表,直到我到达一个没有子节点的节点并附加第一个元素,我会在第二个、第三个......
objective-c - Objective-C:如何将对象树传递给远程分布式对象?
我有一个名为 Node 的类,它包含一组参数和一个名为 subNodes 的 NSMutableArray。一个进程创建一个 Node 对象作为树的根,并使用 subNodes 数组创建一棵大的 Node 树。这整个树应该传递给另一个进程,所以我设置了一个 NSConnection:
通信本身有效,远程方法'setNodeTree',期望根节点将被调用。但是,树的转移不起作用。我必须为 Node 类实现一个 copyWithZone 方法:
但客户端终止并出现以下异常:
任何想法这里出了什么问题?显然,某个地方需要一个 BOOL 变量,但节点不包含任何变量,并且没有使用任何期望或返回 BOOL 的方法。
c# - 在 C# 中正确复制数据
我正在使用 C# 编写一些模拟代码,并且我有一些代码如下:
其中位置、速度、加速度是我用相关运算符定义的一些矢量数据类型。
以及我正在做的代码:
*Points 是具有多种原始(双精度)和非原始(向量)数据类型的点的实例。
我遇到了(明显的)问题,上面的代码很可能只是将 StartPoint 设置为指向以前是 EndPoint 的数据,而 EndPoint 将指向 CurrentPoint。
这意味着,如果我再次修改 CurrentPoint,我最终会意外修改 EndPoint。
在 C++ 中,这很容易防止,因为我可以定义我的赋值运算符来对我的 Point 对象中的基础数据进行深层复制。如何在 C# 中防止这种情况发生?
谢谢你的帮助!
编辑: Vector 类定义为
c++ - c++中strcpy的替代方案
在 C 中,我曾经strcpy
制作字符串的深层副本,但在 C++中使用它仍然“很好”strcpy
还是有更好的替代品我应该使用?
c++ - 复制抽象基类的对象
如果我有一个指向派生自抽象基类的对象的指针(因此我无法创建该类的新对象),并且我希望制作所述对象的深层副本,是否有比实现该对象更简洁的方法让抽象基类创建一个新的纯虚copy
函数,每个继承类都必须实现?
linq - Does LINQ new up memory when creating returns
Does LINQ actually perform a deep copy of the results to a different list/array/etc, or does it simply give me a list/array/etc. composed of references to the original?
python - 由列表乘法创建的嵌套引用列表上的 Deepcopy 不起作用
尽管我很喜欢 Python,但参考和 deepcopy 的东西有时会让我感到害怕。
为什么 deepcopy 在这里不起作用:
我正在使用一个 numpy 数组作为我以后需要的工作区。但我真的希望,如果我使用 deepcopy,我就不必再追逐任何无意的引用了。是否还有其他不起作用的陷阱?
java - Java对象的深度克隆(不是bean)
我目前正在处理的项目有很多被序列化的对象,以便获得现有对象的深层副本。这工作正常,直到我们在运行时有多个调用,在某些情况下,我们在组件之间有 100、200 甚至 1000 个调用,这就是我们遇到性能问题的地方。
复制这些对象被克隆的历史原因是,在不同功能下处理相同对象的两个不同组件不应相互更改,例如 Swing UI 中的更改不应更改后端中的对象值,直到按下保存或同步按钮。
我们有相当大的代码库,我想如果我基于反射编写克隆,它会比序列化更快,但由于我们复杂的对象层次结构或其他原因,这种方法甚至更慢。
我也尝试过使用 CloneUtils (sourceforge project),它也比较慢(我们根本没有使用 Hibernate)。Spring BeanUtils 不是一个选项(我从文档中假设它只使用 bean,即自省,如果我使用它,如果使用非标准访问器公开任何字段,我们将无法复制这些)。
有谁知道,提高性能,同时仍在处理不同的副本。如果我们提供自己的复制方法而不是序列化,我们有一个选项可以加快速度,但是每次更新这些方法都有缺点,如果我们忘记了我们可能会失去功能。