<三>deque容器和list容器
deque:双端队列容器(队头队尾都可入,出)
底层数据结构情况
动态开辟的二维数组,一维数组从2开始,以2倍方式进行扩容,每次扩容后,原来第二维数组
从新的第一维数组的下标oldsize/2 开始存储
如下列图序
满了扩容,扩容第1维,2倍扩
deque
增加:
deq.push_back(20);从尾部添加,可能引起扩容 O(1)
deq.push_font(20); 从头部添加, O(1)
deq.insert(iterator,20);从迭代器指向的位置加入元素 O(N)
删除:
deq.pop_back();//从尾部删除元素 O(1);
deq.pop_front();//从头部删除元素O(1);
deq.erase(it);//从指向的位置删除元素O(n)
查询:
用 迭代器iterator遍历,如果涉及中间insert和erase,一定要考虑迭代器失效的问题
list:链表容器
底层数据结构:双向循环链表
list
增加:
mylist.push_back(20);从尾部添加,可能引起扩容 O(1)
mylist.push_font(20); 从头部添加, O(1)
mylist.insert(iterator,20);从迭代器指向的位置加入元素 O(1),在insert前一般要经过查询操作,查询操作是比较慢的,要一个一个比对
删除:
mylist.pop_back();//从尾部删除元素 O(1);
mylist.pop_front();//从头部删除元素O(1);
mylist.erase(it);//从指向的位置删除元素O(1); 在erase前一般要经过查询操作,查询操作是比较慢的,要一个一个比对
分类:
<六>:C++关于 STL
标签:
C++
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)