vector深拷贝与浅拷贝使用总结

(1)、拷贝构造/赋值函数   --- 深拷贝

    int w= 100;
    int h = 20;
    vector dataA(w*h ,0Xff);
    vector dataB = dataA; // copy 构造

    int * ptr0 = &dataA[0];
    int * ptr1 = &dataB[0];

    printf("%u\n", ptr0);
    printf("%u\n", ptr1);

结果:

vector深拷贝与浅拷贝使用总结_第1张图片

两者的地址是不一样的,可以说明是深拷贝

(2)、swap()和 assign()函数 --- 深拷贝

这两个就不用了说了,swap()是从堆上删除vector中的元素

assign()是重新分配一块内存,给内存赋值

(3)、clone()只是浅拷贝

clone()是浅拷贝,看源码只是指针的移动,并没内存的分配与释放。

 

你可能感兴趣的:(C++,STL,程序测试)