c++几种STL比较
STL工作和面试考的比较多了,下面整理一下。
1、Vector
变长一维数组,连续存放的内存块,有保留内存,堆中分配内存;
支持[]操作,高效率的随机访问;
在最后增加元素时,一般不需要分配内存空间,速度快;在中间或开始操作元素时要进行内存拷贝效率低;
vector高效的原因在于配置了比其所容纳的元素更多的内存,内存重新配置会花很多时间;
注:需要高效的随即存取,而不在乎插入和删除使用vector。
2、list
双向链表,内存空间上可能是不连续的,无保留内存,堆中分配内存;
不支持随机存取,开始和结尾元素的访问时间快,其它元素都O(n);
在任何位置安插和删除元素速度都比较快,安插和删除操作不会使其他元素的各个pointer,reference,iterator失效;
注:大量的插入和删除,而不关系随即存取使用list。
3、deque
双端队列,在堆上分配内存,一个堆保存几个元素,而堆之间使用指针连接;
支持[]操作,在首端和末端插入和删除元素比较快,在中部插入和删除则比较慢,像是list和vector的结合;
注:关心插入和删除并关心随即存取折中使用deque。
4、set&multiset
有序集合,使用平衡二叉树存储,按照给定的排序规则(默认按less排序)对set中的数据进行排序;
set中不允许有重复元素,multiset中运行有重复元素;
两者不支持直接存取元素的操作;
因为是自动排序,查找元素速度比较快;
不能直接改变元素值,否则会打乱原本正确的顺序,必须先下删除旧元素,再插入新的元素。
5、map&multimap
字典库,一个值映射成另一个值,使用平衡二叉树存储,按照给定的排序规则对map中的key值进行排序;
map中的key值不允许重复,multimap中的key允许重复;
根据已知的key值查找元素比较快;
插入和删除操作比较慢。
c++几种STL比较相关推荐
- 【CodeForces - 227B 】Effective Approach (STL,思维)
题干: Once at a team training Vasya, Petya and Sasha got a problem on implementing linear search in an ...
- 最全ACM常用STL
STL 中专门用于排列的函数(可以处理存在重复数据集的排列问题) 头文件:#include <algorithm> using namespace std; 调用: next_permut ...
- 【C++ STL】priority_queue自定义排序函数
priority_queue是C++的一种STL容器,实现为堆.在leetcode刷题中非常常用.有些时候我们需要塞入自定义的数据结构.这样就需要对其的排序方式做一个重新定义. 假设有以下数据结构 s ...
- STL —— STL六大组件
注:以下内容摘自 http://blog.csdn.net/byxdaz/article/details/4633826 STL六大组件 容器(Container) 算法(Algorithm) 迭代器 ...
- STL常用函数总结-map
map是STL里面另外一个很方便的容器,它能够实现一种对应,其实数组也是一种对应,是一种数字与数字或者数字与字符的对应,第几个位置上放了某个字符或者数字,而map则是对这种对应的进一步扩展,它提供一对 ...
- ACM入门及STL简介(转)
第一章 新手入门 1. ACM国际大学生程序设计竞赛简介 1) 背景与历史 1970年在美国TexasA&M大学举办了首次区域竞赛,从而拉开了国际大学生程序设计竞赛的序幕. ...
- ACM入门及STL简介
1. ACM 国际大学生程序设计竞赛简介 1) 背景与历史 1970 年在美国TexasA&M 大学举办了首次区域竞赛,从而拉开了国际大学生程序设计竞赛的序幕.1977 ...
- 《Effective STL》条款解读
条款01:慎重选择容器类型 vector.list和deque有着不同的复杂度,vector是默认使用的序列类型.当需要频繁在序列中间做插入和删除操作时,应使用list.当大多数插入和删除操作发生在序 ...
- STL 标准模板库详细
STL就是Standard Template Library,标准模板库.这可能是一个历史上最令人兴奋的工具的最无聊的术语.从根本上说,STL是一些"容器"的集合,这些" ...
最新文章
- 朋友问我学习高并发需不需要阅读源码,我是这样分析的!!
- 递推水题 Codeforces Round #289 (Div. 2, ACM ICPC Rules) A. Maximum in Table
- vfprintf php,PHP vfprintf() 函数
- css实现图片动画效果
- Android:你不知道的 WebView 使用漏洞
- linux nfs 无法写入,无法写入挂载点(nfs-server),获得“权限被拒绝”
- java流写入数据库_成为Java流大师–第4部分:数据库流
- @builder注解_SpringBoot 整合SpringSecurity示例实现前后分离权限注解+JWT登录认证
- latex公式对齐_Word 写公式最方便的方法
- S如何边缘控制_强夯法效果如何?来看看这个检测结果
- Linux qt程序打包依赖库,Linux打包免安装的Qt程序(编写导出依赖包的脚本copylib.sh,程序启动脚本MyApp.sh)...
- Andriod动态布局
- android-support-v7-appcompat的配置使用
- 给原型扩展一下tirm方法
- [python实现设计模式]-3.简单工厂模式-触宝开放平台
- java jacob pdf_java利用jacob将word转pdf
- android安卓手机变身无线网卡,实现“畅无线“电脑版”台式机笔记本通杀!
- 网络可视化工具netron详细安装流程
- 练习一: 提示:emp员工表(empno员工号/ename员工姓名/job工作/mgr上级编号/hiredate受雇日期/sal薪金/comm佣金/deptno所属部门编号) dept部门
- qq音乐排行榜数据爬取
热门文章
- Android Studio NDK 代码 Source Insight调试 (NDK 目前开发方案 | NDK 编译 | 导入 so 库 | 项目编码转换)
- 【Android 应用开发】自定义View 和 ViewGroup
- Ajax实现局部数据交互的一个简单实例
- jsp+servlet 导出Excel表格
- [中英对照]How PCI Works | PCI工作原理
- 【java排序】 归并排序算法、堆排序算法
- Erdaicms旅游网站系统微信和手机端分销系统正式上线发布啦
- 操作笔记:tomcat在正式环境的常见问题和idea的远程调试
- 小白学phoneGap《构建跨平台APP:phoneGap移动应用实战》连载一(PhoneGap中的API)...
- 省市县级联查询无刷新(转)