问题标签 [shallow-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 回答
469 浏览

silverlight - Silverlight:如何制作 UIElement 的 ShallowCopy

我需要将 a 添加UIElement到两个不同的画布,但一个UIElement只能是 ONE 画布的子级,因此我必须创建UIElement.

我想使用MemberwiseClone,但它受到保护,我不能使用它。

我也想定义一个扩展方法UIElement.ShallowCopy,但它仍然调用MemberwiseClone,它再次受到保护。

编辑:

尝试了以下所有方法,但在 Silverlight 环境中均失败:

0 投票
3 回答
401 浏览

java - Java:向量添加功能很浅吗?

使用 add 函数将对象添加到向量中时,是浅拷贝还是深拷贝?如果它很浅,这意味着如果您更改向量中的对象,您会更改对象的原始副本?

0 投票
2 回答
1091 浏览

python - python列出复制是深拷贝还是浅拷贝,它是如何完成的?

如何在 python 中为列表完成深度复制?

我对复制列表有点困惑。是使用浅拷贝还是深拷贝?另外,子列表的语法是什么?是g=a[:]吗?

0 投票
3 回答
1649 浏览

ios - 如何在 iOS 中实现 NSMutableArray 的深浅复制?

我正在尝试为 NSMutableArray 实现深浅复制,

这个程序的输出是,

深拷贝:
之前的旧数组的长度:4
之后的旧数组的长度:4

浅拷贝:
旧数组之前的长度:4
旧数组之后的长度:4

我不知道为什么浅拷贝删除没有反映到原始 NSMutableArray。

0 投票
2 回答
43275 浏览

c - C中的浅拷贝和深拷贝

我尝试用谷歌搜索,但只有面向对象的语言作为结果弹出。

据我了解,浅拷贝是复制结构的某些成员。

所以让我们说一个结构是

复制 char** 将是一个浅拷贝

但是复制整个链表会是深拷贝吗?

我有正确的想法还是我离题了?谢谢。

0 投票
6 回答
1940 浏览

c# - 为什么 List 的副本仍然使用 C# 更改原始 List 中的属性

假设我有这门课

并像这样使用它:

为什么更改的isActive属性EmployeesCopy也会修改原始列表中的属性?

0 投票
2 回答
3636 浏览

perl - 在 Perl 中将引用浅复制到变量中

在 Perl 中,您可以为一个变量分配对另一个变量的引用,如下所示:

而且,因为它是一个参考,你可以做这样的事情,这两个变量都会受到影响:

并且两个变量都将包含1..12,因为它们都指向同一个空间。

现在,我想知道是否有任何方法可以做同样的事情,但从一个 ref 开始,然后将该引用分配给一个普通变量。例如:

我知道我可以像这样分配它:

但是,那是副本。如果我更改 $ref 或 @array,这些将是独立的更改。

有没有办法让@array 指向与 $ref 相同的变量?

0 投票
1 回答
359 浏览

c++ - 懒惰复制——如何从浅拷贝创建深拷贝

我有一个使用延迟复制的类 - 当调用复制构造函数时,它会创建浅拷贝,而当调用一个方法时,它会创建深拷贝并添加更多数据。

我被困在我应该从那个浅拷贝创建一个深拷贝的地方。

深拷贝应如下所示:

但我不知道如何实现它。我试图创建一个临时对象并用 *this 填充它

最后

但它不起作用。

为什么我不首先创建深拷贝?因为有这么多副本,而其中只有少数被更改,而且它们占用了大量内存。

我该怎么做?

PS 我被禁止在这个任务中使用 STL 和字符串。

0 投票
1 回答
125 浏览

ruby - 更改 ruby​​ 中浅拷贝字符串数组的内容

假设我在 ruby​​ 中创建了以下数组:

这里,b 是 a 的浅拷贝。所以如果我这样做:

我得到的 a 和 b 都等于 ["apple pie", "cherry pie"]。那里没问题。但是假设我改变了 b 的一个元素:

并发出相同的“每个”命令。现在 b 是 ["apple pie", "blueberry"],因为 a[0] 和 b[0] 是相同的字符串,但 a[1] 和 b[1] 是不同的字符串。我可以在 a 和 b 上运行命令,但是 b 是 ["apple pie pie", "blueberry pie"],因为我已经对同一个字符串运行了两次附加操作。

有没有办法在不重复的情况下修改a和 b 的所有字符串。在这个简单的示例中,我可以测试子字符串“pie”,但这不适用于其他类型的更改(例如删除第一个字符)。

我尝试创建一个包含所有字符串的集合,以便每个字符串都是唯一的;但似乎集合创建复制了字符串,因此无法就地修改它们。有没有办法测试两个字符串在内存中是否相同?我已经用谷歌搜索了,但什么也没找到。

它的应用是我有很大的字符串数组,我“复制”它们来创建它们的历史。现在我想对整个历史应用更改,而不是双重应用(或三重等)更改。

0 投票
3 回答
1346 浏览

c++ - 在我使用完这个对象之前调用析构函数来破坏对象

在我的代码中有 operator+ 重载。在这个范围内,我定义了 object ans,我想构建并返回它,但似乎析构函数ans在我返回它之前就已经解构了,所以这个方法返回了一些未定义的值。

我不明白我错在哪里?是析构函数,构建函数,还是在我的 operator+ 重载中?

这是我的代码:

感谢您的时间和帮助。