mutableCopy始终是深拷贝。 对容器进行拷贝,容器内元素始终为浅拷贝。 浅拷贝、深拷贝和完全拷贝总结: 浅拷贝(shallow copy):仅仅对内存地址进行了拷贝,并没有对源对象进行拷贝;对于被复制对象的每一层都是指针复制。 深拷贝(one-level-deep copy):不仅对内存地址进行拷贝,而且对源对象进行拷贝;对于被复制对象,至...
对容器类的深拷贝是对容器中的每个元素都进行拷贝,容器类的浅拷贝是对容器里的内容不进行拷贝,两个容器的地址是不同的,但容器里的所装的东西是一样的,在一个容器中修改值,则另一个浅拷贝的容器中的值也会变化。所以对非容器类看对象是否为深拷贝还是浅拷贝就得看对象的内存地址就可以看出来,而对容器类,我们...
可变容器: NSMutableArray*arr4 = [[NSMutableArray alloc] initWithArray:@[[NSViewnew], [NSViewnew], [NSViewnew]] ]; NSMutableArray*arr5 = [arr4 copy];//浅拷贝NSMutableArray *arr6 = [arr4 mutableCopy];//浅拷贝NSLog(@"arr4 address[%p] content[%@]", arr4, arr4); NSLog(@"ar...
在Objective-C中对象之间的拷贝分为浅拷贝和深拷贝。说白了,对非容器类的浅拷贝就是拷贝对象的地址,对象里面存的内容仍然是一份,没有新的内存被分配。对非容器类的深拷贝就是重写分配一块内存,然后把另一个对象的内容原封不动的给我拿过来。对容器类的深拷贝是对容器中的每个元素都进行拷贝,容器类的浅拷贝是...
动态内存分配:如果你的类使用了动态内存分配,如new或malloc分配内存,这就需要特别注意深拷贝和浅拷贝。浅拷贝可能会导致多个对象指向同一块内存,而当其中一个对象被销毁时,可能会引发问题。 处理容器:如果你在处理包含指针或动态分配内存的容器(如列表,向量,映射等)时,也需要特别注意。浅拷贝可能导致原始容器和拷贝...
1.浅拷贝 所谓的浅拷贝,就是指只是将对象内存地址多了一个引用,也就是说,拷贝结束之后,两个对象的值不仅相同,而且对象所指的内存地址都是一样的。 2.单层深拷贝 对于不可变的容器类对象(如NSArray、NSSet、NSDictionary)进 mutableCopy 操作,内存地址发生了变化,但是其中的元素内存地址并没有发生变化,属于单层深...
copy是浅拷贝,只复制指针,地址不变(浅拷贝)。mutablecopy是真正的内存复制(深拷贝)。 2.对于容器类对象:NSMutableString等 copy和mutablecopy都是内存复制(深拷贝),但是copy出来的对象不可增加。 但是对于NSArray和NSMutableArray对象来说,copy和mutablecopy都只是复制Array对象,但是对于Array内的内容对象来说并没有复制...
STL包括两部分内容:容器和算法;容器即存放数据的地方,比如array, vector,分为两类,序列式容器和关联式容器: 序列式容器,其中的元素不一定有序,但是都可以被排序,比如vector,list,queue,stack,heap, priority-queue, slist 关联式容器,内部结构是一个平衡二叉树,每个元素都有一个键值和一个实值,比如map, set, ...
关联式容器有set和multiset,关联式容器map/multimap,对组pair,算法(查找、排序、拷贝和替换、算数和...
主要由三部分组成,分别是容器,迭代器,算法。 2.1 数组 2.1.1 数组vector 练习for循环求数组元素的最大值(A) 2.1.2 字符串 string 2.2 迭代器 2.2.1 auto 关键字 (C++11) 2.2.2 迭代器 iterator 2.2.3 范围for循环(遍历数组的三种方式) (C++11) 2.2.4 C++标准库STL容器使用值语义 2.3 容器 2.3.1...