面试题集锦----容器
面试中常提到对几个容器的考察,包括vector、deque、list、map、set等,下面就对比说明这几个容器的区别和联系。
一、vector和list的区别
1、vector方便随机存取,list高效插入、删除。vector是一段连续的内存,所以在随机存取时拥有较高的效率,但是插入和删除时很耗资源;list是由双向链表实现,是不连续的内存,因此跟vector正好相反。
2、正如上面所说,vector是单向的,而list是双向的。
3、当容量不足时,vector会主动开辟内存(一般是2倍),list需要手动申请。
参考vector的内存处理过程,我们在扩充内存时也应该遵守
(1)申请一块较大的内存空间
(2)将旧数据移至新的内存空间
(3)释放旧内存空间。
二、vector和deque的区别
deque和vector非常相似,既可以快速的随机存取,又能快速的插入删除。deque由两级组成,第一级跟vector相同,第二级指向容器的首尾。
(1)vector不支持快速的随机存储,而deque能够快速的插入和删除
(2)vector的内存是连续,deque的内存是不连续的,并且占用的内存远大于vector
(3)在对内存扩展时,deque优于vector,因为内部结构显示,deque不必在内存重分配时复制所有的元素
(4)deque的内存会自动释放,并且会自动缩小内存的大小。
三、map和set区别
(1)map的节点是一对数据,而set的节点是单个数据
(2)set是经过排序的,所以值是不重复的;而map(key-value形式)的key不能重复
转载请标明出处

浙公网安备 33010602011771号