vector list deque比较

本文深入探讨了C++容器中的list、deque与vector的区别与使用场景,详细介绍了它们各自的特点和优势,包括数据访问、插入、删除操作的性能比较,以及如何在实际应用中灵活选择合适的容器。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

list用法简介

list是一个双端链表,所以相对vector而言,优点是删除和插入更快速.但缺点是随机访问数据效率变低了.

list的很多用法和vector类似.这里主要讲下它不同的一些用法.

 

先随便定义一个list对象

list<int> lt;

lt.push_back(88);

list<int> lt2( lt );

 

1.不支持随机访问

由于list随机访问相对于vector而言太慢了,所以干脆不提供该功能.所以不能lt.at(0)或者lt[0]这样用了.

2.支持在头和尾部添加与删除元素

vector中push_back与pop_back都只是针对尾部元素的添加与删除.而list除了仍旧有这两函数还多出另外两个.

lt.push_front( 11); //在头部添加元素

lt.pop_front(); //在头部删除元素.

3.合并两个链表

lt.merge(lt2); //表示把lt与lt2合并成一个链表,也就是把lt2的元素移到lt中,并且默认是升序的.而lt2则变为空

4.删除匹配元素

lt.remove( 11);  //删除链表中值为11的所有元素

5.反转链表

lt.reverse(); //把链表中元素的顺序反过来

6.顺序(默认升序)

lt.sort();

7.删除相邻重复元素

lt.unique();  //要先lt.sort()排序下.排序后相同元素肯定变相邻了

 

deque 用法简介

deque也是采用动态数组来表示,但是内存管理方式跟vector有点不一样

所以vector中有reserve, capacity这两函数,而deque就没有.

deque可以说是结合了vector和list的一些功能.

可以随机访问数据(vector有,而list没有的功能)

可以添加和删除头部元素(list有而vector没有的功能)

deque<int> de;

de.push_back(88);

de.push_front(11);

int num = de.at(0);

int ret = de[0];

de.pop_front();

de.pop_back();

 

vector , list , deque比较

1.vector随机访问数据性能最好.

所以如果经常访问数据,但除了在尾部外很少在其他地方添加删除元素.则用vector.

 

2.list随机添加删除元素性能最好.

所以如果经常添加删除数据,而较少随机访问数据,则用list.

 

3.deque可随机访问元素,也可在头部和尾部添加删除元素

deque跟vector一样可以随机访问数据,但性能不如vector好.另外deque比vector多出的功能是可以头部添加删除元素.当然删除添加元素性能也不如list好

所以针对又想随机访问数据,又需要在头部添加删除元素的则用deque.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值