leetcode刷题笔记1 复制带随机指针的链表 知识补充

《深拷贝》:

 一个引用对象一般来说由两个部分组成:一个具有名字的Handle,也就是我们所说的声明(如变量)和一个内部(不具有名字)的对象,也就是具有名字的Handle的内部对象。他在托管堆中分配,一般是由新增引用对象的New方法进行创建。深拷贝是指源对象与拷贝对象互相独立,其中任何一个对象的改动都不会对另一个对象造成影响。

如果在类中没有显式地声明一个拷贝构造函数,那么编译器将会自动生成一个默认地拷贝构造函数,该构造函数完成对象之间地位拷贝。位拷贝又称为浅拷贝。浅拷贝会带来数据安全方面的隐患。在进行赋值之前,为指针类型的数据成员另辟可一个独立的内存空间,实现真正内容上的拷贝。这种拷贝称为深拷贝。

STL容器《unordered_map》:

map与unordered_map:

引入头文件不同:map:#include <map>      unordered_map:#include <unordered_map>

内部实现机理不一样:

map内部实现了一个红黑树,红黑树具有自动排序功能,因此map内部的所有元素都是有序的,红黑树的每一个节点都代表map的一个元素。因此,对于map的查找,删除,添加等一系列的操作都是相对于红黑树进行的操作。map中的元素是按照二叉搜索树存储的,使用中序遍历既可以将键值按照从小到大遍历出来。map的很多操作时间复杂度在logn。但是空间占用率高。

unordered_map:内部实现了一个哈希表(也叫散列表,通过把关键码值映射到Hash表中一个位置来访问记录,查找的时间复杂度可以达到O(1),其在海量数据处理中有着广泛应用)。unordered_map元素的排列是无序的。查找速度快,但是建立比较耗费时间。

猜你喜欢

转载自www.cnblogs.com/yaggy/p/12906471.html