STL——list

list简介

list是由双向链表实现的, 每个节点存储一个元素, 它可以实现C++数据结构中链表的所有功能.

构造函数

list<int>ls;//创建空list对象
list<int>ls2(size);//创建初始大小为size的list对象
list<int>ls3(size, value);//创建初始大小为size, 每个元素初始值为value的list对象
list<int>ls4(ls3);//拷贝构造

元素修改

list给我们提供了4种修改元素的函数:

ls.push_back(2);//向链表头部插入2
ls.push_front(1);//向链表末尾插入1
ls.pop_front();//删除链表开头的第一个元素
ls.pop_back();//删除链表的末尾元素
list<int>::iterator pos;
ls.insert(pos,1);//插入元素到指定位置
ls.erase(pos);//删除pos位置的元素
ls.erase(pos,pos+2);//删除pos和pos+1位置的元素
ls.clear();//清空链表

其他成员函数

ls.merge(ls2);//将两个链表合成一个链表
ls.sort();//升序排序
ls.sort(greater<int>());//降序排序
ls.remove(1);//删除链表中多有值为1的元素

list和vector的区别

vectorlist
可以随机访问, 访问元素效率为O(1)不能随机访问, 访问效率为O(n)
插入, 删除的效率低, 时间复杂度为O(n)插入, 删除效率高, 时间复杂度为O(1)
底层为连续空间不容易造成内存碎片, 空间利用率高, 缓存利用率高底层节点动态开辟, 容易造成内存碎片, 空间利用率低, 缓存利用率低
插入, 删除时会导致所有迭代器失效只有删除时才会导致被删除的节点的迭代器失效
适用于经常访问, 不经常增删的场合适用于经常需要增删, 访问比较少的场合
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值