shallow-copy相关内容

复制构造函数/操作符/函数是否需要明确它实现的复制变体?

昨天我问了 一个关于在 C# 中复制对象的问题,大多数答案都集中在深拷贝和浅拷贝之间的区别,以及应该明确给定拷贝构造函数(或运算符或函数)实现这两种拷贝变体中的哪一种.我觉得这很奇怪. 我用 C++ 编写了很多软件,这是一种严重依赖复制的语言,而且我从不需要多个复制变体.我曾经使用过的唯一一种复制操作是我称之为“足够深的复制"的操作.它执行以下操作: 如果对象拥有成员变量的所有权(参见 ..
发布时间:2022-01-20 18:21:43 其他开发

如何在 PHP 中创建对象的副本?

似乎在 PHP 中对象是通过引用传递的.甚至赋值运算符似乎也没有创建 Object 的副本. 这是一个简单的、人为的证明: 在这两种打印情况下,我都得到了“之后" 那么,我如何将 $a 通过值而不是引用传递给 set_b()? 解决方案 在 PHP 5+ 中,对象是通过引用传递的.在 PHP 4 中,它们是按值传递的(这就是为什么它在运行时通过引用传递,这已被弃用). ..
发布时间:2022-01-20 17:36:00 PHP

如何在 Python 中克隆或复制集合?

对于复制列表:shallow_copy_of_list = old_list[:]. 对于复制字典:shallow_copy_of_dict = dict(old_dict). 但是对于 set,我担心类似的事情不会起作用,因为说 new_set = set(old_set) 会给出一个集合的集合? 但它确实有效.所以我在这里发布问题和答案以供参考.以防其他人有同样的困惑. ..
发布时间:2022-01-17 18:30:35 Python

在java中清除或设置空对象

我最近在研究释放 Java 对象占用的内存.这样做时,我对 Java 中如何复制对象(浅/深)以及如何避免在对象仍在使用时意外清除/无效感到困惑. 考虑以下场景: 将 ArrayList 作为参数传递给方法. 将 ArrayList 传递给线程处理的可运行类. 将 ArrayList 放入 HashMap. 现在在这些情况下,如果我调用 list = null; 或 list ..
发布时间:2022-01-06 23:05:31 Java开发

JS:Object.assign() 创建深拷贝还是浅拷贝

我刚接触到这个概念 var copy = Object.assign({}, originalObject); 将原始对象的副本创建到“copy"对象中.但是,我的问题是,这种克隆对象的方式是创建深拷贝还是浅拷贝? PS:令人困惑的是,如果它创建了一个深拷贝,那么这将是克隆对象的最简单方法. 解决方案 忘记深拷贝,即使是浅拷贝也不安全,如果你正在拷贝的对象有一个带有 enumer ..
发布时间:2021-12-11 19:40:36 前端开发

在 Java 中,什么是浅拷贝?

java.util.Calendar.clone() 返回“...具有相同属性的新日历"并返回“此日历的浅拷贝". 这似乎不是所回答的浅拷贝此处 在 SO 上.这个问题被标记为与语言无关,Java 似乎没有遵循与语言无关的定义.当我逐步执行代码时,我注意到结构和元素被复制到这个新对象,而不仅仅是语言不可知的结构. 在 Java 中,什么是浅拷贝? 它与 Java 深拷贝(如果存在 ..
发布时间:2021-11-25 16:53:22 Java开发

Javascript slice 方法是否返回浅拷贝?

在 Mozilla 开发人员翻译的韩语 lang 中说“切片方法"返回一个新的浅复制数组. 所以我测试了我的代码. var Animal = ['ant', 'bison', 'camel', 'duck', 'elephant'];var t = 动物切片(2,4);控制台日志(t);t[0] = 'aaa';控制台日志(t);控制台日志(动物); 但是,如果 slice 方法返回浅数 ..
发布时间:2021-11-18 02:34:25 前端开发

数组的浅拷贝,为什么不能简单地做newArr = oldArr?

假设我有一个整数数组"orig" 我想浅复制它,所以我不能这样做吗? int []浅=原始; 我的教授说,对于基元,浅拷贝和深拷贝本质上是相同的,因为我们必须在数组的每个索引上进行拷贝.但是将整个数组设置为等于另一个数组会做同样的事情,对吧? 我对对象数组也有类似的疑问 这是我的思想 Book [] objArr2 = objArr1; 但是有人告诉我,我必须复制 ..
发布时间:2021-04-29 20:44:10 Java开发

如何在python中正确复制列表

我想跟踪每次迭代中气泡排序算法的中间状态.我试图在循环运行时将它们缓存在字典中,但是我一直都在保持相同状态 这是我的代码: def bubbleort(lst):缓存= {}#交换元素以使其顺序排列iter = 0对于范围(len(lst)-1,0,-1)中的iter_num:new_lst = lst对于范围(iter_num)中的idx:迭代+ = 1如果new_lst [idx]> ..
发布时间:2021-04-29 20:44:07 Python

如何在C ++中同时使用默认和自定义副本构造函数?

我的课程很长,有很多数据成员.我想为此编写一个副本构造函数.但是,如果我编写自己的副本构造函数,则会失去对默认副本构造函数的访问权限. 我只想在自己的副本构造函数中修复一些指针.所以我想拥有一个对象的浅表副本,可以通过默认的副本构造函数来完成. 当我拥有自己的副本构造函数时,是否可以访问默认的副本构造函数? 解决方案 将您不想更改的内容包装在一个结构中,并从中(私下)派生.在您 ..
发布时间:2021-04-19 19:56:26 C/C++开发

哈希集的浅表副本

做这件事的最好方法是什么? var set2 = new HashSet(); 用这样的foreach遍历集合. foreach(集合中的var n)set2.Add(n); 或者使用类似工会的东西. set2 = set.UnionWith(set);//所有元素 解决方案 使用构造函数: HashSetset2 =新 ..
发布时间:2021-04-18 19:34:06 C#/.NET

如何在Python中克隆或复制集合?

用于复制列表:shallow_copy_of_list = old_list[:]. 要复制字典:shallow_copy_of_dict = dict(old_dict). 但是对于set,我担心类似的事情不起作用,因为说new_set = set(old_set)会给出一组集合吗? 但是确实有效.因此,我在此处发布问题和答案以供参考.万一其他人有同样的困惑. 解决方案 ..
发布时间:2020-07-08 09:10:45 Python

python列表复制是深层复制还是浅层复制,如何完成?

Deep copy如何在python列表中完成? 我对复制列表有些困惑.使用浅拷贝还是深拷贝? 另外,子列表的语法是什么?是g=a[:]吗? 解决方案 新列表是引用的副本. g[0]和a[0]都引用相同的对象.因此,这是一个浅表副本.您可以看到copy模块的deepcopy方法用于递归复制容器,但是根据我的经验,这不是常见的操作. 通常,我更喜欢使用更明确的g = list(a ..
发布时间:2020-07-07 01:53:31 Python

为什么Object.assign使用数组?

因此,我正在阅读一篇文章,以克隆对象和数组.他们所有人都提到Object.assign()可用于复制对象,但没有人提到Object.assign()也可用于浅复制数组. 有人可以解释它的工作原理吗? Code to Explain is in JS Bin : https://jsbin.com/kaqocixize/edit?js,console 解决方案 JS是面向原型的语 ..
发布时间:2020-07-07 01:52:28 前端开发