标签: deep-copy

std vector C++ - 深或浅副本

我想知道是否复制一个向量我正在用它的值复制向量(而这不适用于数组,深度复制需要一个循环或memcpy).

你能暗示解释一下吗?

问候

c++ copy vector std deep-copy

47
推荐指数
2
解决办法
6万
查看次数

如何在Java中对二维数组进行深层复制?

我只是.clone()在我的2d boolean阵列上使用,认为这是一个深层复制.

如何执行boolean[][]阵列的深层复制?

我应该循环它并做一系列System.arraycopy的吗?

java arrays copy deep-copy multidimensional-array

46
推荐指数
6
解决办法
6万
查看次数

nodeJS的深度扩展(如jQuery)

我正在努力使用nodeJS中的对象的深层副本.我自己的延伸是废话.下划线的延伸是持平的.在stackexchange上有相当简单的扩展变体,但是没有一个甚至接近jQuery.extend(true,{},obj,obj,obj)..(大多数实际上都很糟糕并且搞砸了asnyc代码的好处.)

因此,我的问题是:NodeJS有一个很好的深层副本吗?有人移植过jQuery吗?

jquery deep-copy extend node.js

42
推荐指数
5
解决办法
4万
查看次数

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

我刚刚遇到了这个概念

var copy = Object.assign({}, originalObject);
Run Code Online (Sandbox Code Playgroud)

它会将原始对象的副本创建到" copy"对象中.但是,我的问题是,这种克隆对象的方式是创建深拷贝还是浅拷贝?

PS:令人困惑的是,如果它创建了一个深层副本,那么它将是克隆一个对象的最简单方法.

javascript object deep-copy shallow-copy

40
推荐指数
5
解决办法
2万
查看次数

在Python中复制嵌套列表

我想复制一个2D列表,这样如果我修改一个列表,另一个列表就不会被修改.

对于一维列表,我只是这样做:

a = [1, 2]
b = a[:]
Run Code Online (Sandbox Code Playgroud)

现在,如果我修改b,a不修改.

但这不适用于二维列表:

a = [[1, 2],[3, 4]]
b = a[:]
Run Code Online (Sandbox Code Playgroud)

如果我修改b,a也会被修改.

我该如何解决?

python copy list deep-copy

38
推荐指数
3
解决办法
2万
查看次数

浅拷贝还是深拷贝?

我对将这一个对象复制到另一个对象的这两种方法有点新鲜.我很困惑,无法发现深拷贝和浅拷贝之间的主要区别..我已经经历了很多关于这个的理论,但我需要用适当的例子解释..我有一个程序,我将一个对象复制到另一个. - >

   class A
    {
        public int a = 0;
        public void display()
        {
            Console.WriteLine("The value of a is " + a);
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            A ob1 = new A();
            ob1.a = 10;
            ob1.display();
            A ob2 = new A();
            ob2 = ob1;
            ob2.display();
            Console.Read();
        }
    }
Run Code Online (Sandbox Code Playgroud)

这是浅拷贝还是深拷贝?任何人都可以请原因提供答案.如果是深拷贝,那么请为此程序提供浅拷贝的代码,执行相同的对象复制工作,反之亦然.

如果以上是浅拷贝,那么即使这应该是浅拷贝 - >

            A ob1 = new A();
            ob1.a = 10;
            ob1.display();
            A ob2 = ob1;
            ob2.a = 444;
            ob1.display();
Run Code Online (Sandbox Code Playgroud)

c# deep-copy shallow-copy

33
推荐指数
3
解决办法
5万
查看次数

克隆rails中的记录,是否可以克隆关联和深层复制?

我是.在铁路上抓住一条记录......

  new_blerg = Blerg.find(1).clone
Run Code Online (Sandbox Code Playgroud)

此记录具有负载和负载的关联,并且这些关联甚至具有关联.

有没有办法深度复制记录并克隆它,以便克隆所有这些关联?

activerecord clone ruby-on-rails duplicates deep-copy

31
推荐指数
3
解决办法
2万
查看次数

copy.deepcopy vs pickle

我有一个小部件的树结构,例如集合包含模型,模型包含小部件.我想复制整个集合,copy.deepcopy与'pickle and de pickle'对象相比更快,但cPickle用C语言写得快得多,所以

  1. 为什么我(我们)总是不使用cPickle而不是深度复制?
  2. 还有其他副本吗?因为pickle比deepcopy慢,但cPickle更快,所以可能是深度复制的C实现将是胜利者

示例测试代码:

import copy
import pickle
import cPickle

class A(object): pass

d = {}
for i in range(1000):
    d[i] = A()

def copy1():
    return copy.deepcopy(d)

def copy2():
    return pickle.loads(pickle.dumps(d, -1))

def copy3():
    return cPickle.loads(cPickle.dumps(d, -1))
Run Code Online (Sandbox Code Playgroud)

时序:

>python -m timeit -s "import c" "c.copy1()"
10 loops, best of 3: 46.3 msec per loop

>python -m timeit -s "import c" "c.copy2()"
10 loops, best of 3: 93.3 msec per loop

>python -m timeit -s "import …
Run Code Online (Sandbox Code Playgroud)

python pickle deep-copy

29
推荐指数
2
解决办法
1万
查看次数

如何在Swift中复制"Dictionary"?

如何在Swift中复制"Dictionary"?

也就是说,获取具有相同键/值但不同内存地址的另一个对象.

此外,如何在Swift中复制对象?

谢谢,

copy deep-copy swift

28
推荐指数
2
解决办法
2万
查看次数

OpenCV cv :: Mat的深层副本

复制的行为cv::Mat让我很困惑.

我从文档中了解到Mat::copyTo()深层复制,而赋值运算符则不是.我的问题:

  1. 我该怎么做才能cv::Mat从函数中返回一个,比如:cv::Mat func()

  2. 根据文档,如果我返回cv::Mat它将没有用,因为在函数返回后该函数的本地副本cv::Mat将被销毁,因此接受函数外部返回值的那个应该指向一些随机地址.奇怪的是(大多数情况下)它正常工作.例如,以下工作:

    cv::Mat CopyOneImage(const cv::Mat& orgImage)
    {
    
        cv::Mat image;
        orgImage.copyTo(image);
        return image;
    
    }
    
    int main()
    {
    
        std::string orgImgName("a.jpg");        
        cv::Mat orgImage;
        orgImage = cv::imread(orgImgName);
    
        cv::Mat aCopy;
        aCopy = CopyOneImage(orgImage);
    
        return 1;
    }
    
    Run Code Online (Sandbox Code Playgroud)

但为什么?这不是一个深刻的副本.

问题3.有时,赋值运算符似乎也是深层复制:

    int main()
    {

        std::string orgImgName("a.jpg");        
        cv::Mat orgImage;
        orgImage = cv::imread(orgImgName);

        cv::Mat aCopy;
        orgImage.copyTo(aCopy);

        cv::Mat copyCopy1;
        copyCopy1 = aCopy;

        cv::namedWindow("smallTest", 1);
        cv::imshow("smallTest", copyCopy1);
        uchar key = (uchar)cv::waitKey();

        cv::Mat orgImage2 = cv::imread("b.jpg");
        orgImage2.copyTo(aCopy);

        cv::imshow("smallTest", …
Run Code Online (Sandbox Code Playgroud)

c++ opencv deep-copy

26
推荐指数
2
解决办法
4万
查看次数