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比较相关推荐

  1. 【CodeForces - 227B 】Effective Approach (STL,思维)

    题干: Once at a team training Vasya, Petya and Sasha got a problem on implementing linear search in an ...

  2. 最全ACM常用STL

    STL 中专门用于排列的函数(可以处理存在重复数据集的排列问题) 头文件:#include <algorithm> using namespace std; 调用: next_permut ...

  3. 【C++ STL】priority_queue自定义排序函数

    priority_queue是C++的一种STL容器,实现为堆.在leetcode刷题中非常常用.有些时候我们需要塞入自定义的数据结构.这样就需要对其的排序方式做一个重新定义. 假设有以下数据结构 s ...

  4. STL —— STL六大组件

    注:以下内容摘自 http://blog.csdn.net/byxdaz/article/details/4633826 STL六大组件 容器(Container) 算法(Algorithm) 迭代器 ...

  5. STL常用函数总结-map

    map是STL里面另外一个很方便的容器,它能够实现一种对应,其实数组也是一种对应,是一种数字与数字或者数字与字符的对应,第几个位置上放了某个字符或者数字,而map则是对这种对应的进一步扩展,它提供一对 ...

  6. ACM入门及STL简介(转)

    第一章 新手入门 1.      ACM国际大学生程序设计竞赛简介 1)      背景与历史 1970年在美国TexasA&M大学举办了首次区域竞赛,从而拉开了国际大学生程序设计竞赛的序幕. ...

  7. ACM入门及STL简介

    1.       ACM 国际大学生程序设计竞赛简介 1)       背景与历史 1970 年在美国TexasA&M 大学举办了首次区域竞赛,从而拉开了国际大学生程序设计竞赛的序幕.1977 ...

  8. 《Effective STL》条款解读

    条款01:慎重选择容器类型 vector.list和deque有着不同的复杂度,vector是默认使用的序列类型.当需要频繁在序列中间做插入和删除操作时,应使用list.当大多数插入和删除操作发生在序 ...

  9. STL 标准模板库详细

    STL就是Standard Template Library,标准模板库.这可能是一个历史上最令人兴奋的工具的最无聊的术语.从根本上说,STL是一些"容器"的集合,这些" ...

最新文章

  1. 朋友问我学习高并发需不需要阅读源码,我是这样分析的!!
  2. 递推水题 Codeforces Round #289 (Div. 2, ACM ICPC Rules) A. Maximum in Table
  3. vfprintf php,PHP vfprintf() 函数
  4. css实现图片动画效果
  5. Android:你不知道的 WebView 使用漏洞
  6. linux nfs 无法写入,无法写入挂载点(nfs-server),获得“权限被拒绝”
  7. java流写入数据库_成为Java流大师–第4部分:数据库流
  8. @builder注解_SpringBoot 整合SpringSecurity示例实现前后分离权限注解+JWT登录认证
  9. latex公式对齐_Word 写公式最方便的方法
  10. S如何边缘控制_强夯法效果如何?来看看这个检测结果
  11. Linux qt程序打包依赖库,Linux打包免安装的Qt程序(编写导出依赖包的脚本copylib.sh,程序启动脚本MyApp.sh)...
  12. Andriod动态布局
  13. android-support-v7-appcompat的配置使用
  14. 给原型扩展一下tirm方法
  15. [python实现设计模式]-3.简单工厂模式-触宝开放平台
  16. java jacob pdf_java利用jacob将word转pdf
  17. android安卓手机变身无线网卡,实现“畅无线“电脑版”台式机笔记本通杀!
  18. 网络可视化工具netron详细安装流程
  19. 练习一: 提示:emp员工表(empno员工号/ename员工姓名/job工作/mgr上级编号/hiredate受雇日期/sal薪金/comm佣金/deptno所属部门编号) dept部门
  20. qq音乐排行榜数据爬取

热门文章

  1. Android Studio NDK 代码 Source Insight调试 (NDK 目前开发方案 | NDK 编译 | 导入 so 库 | 项目编码转换)
  2. 【Android 应用开发】自定义View 和 ViewGroup
  3. Ajax实现局部数据交互的一个简单实例
  4. jsp+servlet 导出Excel表格
  5. [中英对照]How PCI Works | PCI工作原理
  6. 【java排序】 归并排序算法、堆排序算法
  7. Erdaicms旅游网站系统微信和手机端分销系统正式上线发布啦
  8. 操作笔记:tomcat在正式环境的常见问题和idea的远程调试
  9. 小白学phoneGap《构建跨平台APP:phoneGap移动应用实战》连载一(PhoneGap中的API)...
  10. 省市县级联查询无刷新(转)