容器名称 说明
vector

典型的序列容器,C++标准严格要求次容器的实现内存必须是连续的,唯一可以和标准C兼容的stl容器,任意元素的读取、修改具有常数时间复杂度,在序列尾部进行插入、删除是常数时间复杂度,但在序列的头部插入、删除的时间复杂度是O(n),可以 在任何位置插入新元素,有随机访问功能,插入删除操作需要考虑。

本质上vector使用动态分配数组来存储它的元素,当新的元素插入时,这个数组需要被重新分配大小为了增加存储空间,其做法是:分配一个新数组,然后将全部元素移动到这个数组,就时间而言,代价高,因为每当一个新的元素加入到容器时

deque 序列容器,内存也是连续的,和vector相似,区别在于在序列的头部插入和删除操作也是常数时间复杂度, 可以 在任何位置插入新元素,有随机访问功能。
list  序列容器,内存是不连续的,任意元素的访问、修改时间复杂度是O(n),插入、删除操作是常数时间复杂度, 可以 在任何位置插入新元素。
set   关联容器,元素不允许有重复,数据被组织成一棵红黑树,查找的速度非常快,时间复杂度是O(logN)。

  • set以RBTree作为底层容器;
  • 所得元素的只有key没有value,value就是key;
  • 不允许出现键值重复;
  • 所有的元素都会被自动排序(中序遍历出来是有序的);
  • 不能通过迭代器来改变set的值,因为set的值就是键。
multiset
  • 关联容器,和set一样,区别是允许有重复的元素,具备时间复杂度O(logN)查找功能。
unordered_set
  • unordered_set它的实现基于HashTable;
  • 有unordered_set就一定有unordered_multiset,跟set和multiset一样,前者key不可以重复,后者key可以重复;
  • unordered_set是一种无序集合,既然跟底层实现基于HashTable那么它一定拥有快速的查找和删除、添加的优点.缺点是基于HashTable失去了基于rbtree的自动排序功能。
map  
  • 关联容器,按照{键,值}方式组成集合,按照键组织成一棵红黑树,查找的时间复杂度O(logN),其中键不允许重复,值可以重复;
  • map是按照operator<比较判断元素是否相同,以及比较元素的大小,然后选择合适的位置插入到树中。所以,如果对map进行遍历(中序遍历)的话,输出的结果是有序的。顺序就是按照operator< 定义的大小排序;
  • 缺点: 空间占用率高,因为map内部实现了红黑树,虽然提高了运行效率,但是因为每一个节点都需要额外保存父节点、孩子节点和红/黑性质,使得每一个节点都占用大量的空间;
  • 适用处:对于那些有顺序要求的问题,用map会更高效一些。
multimap
  • 和map一样,区别是键可以重复。
unordered_map 
  • 优点: 因为内部实现了哈希表,因此其查找速度非常的快;
  • 缺点: 哈希表的建立比较耗费时间;
  • 适用处:对于查找问题,unordered_map会更加高效一些,因此遇到查找问题,常会考虑一下用unordered_map。
  • 对于map和unordered_map:内存占有率的问题就转化成红黑树 VS hash表 , 还是unorder_map占用的内存要高,但是unordered_map执行效率要比map高很多 。
  • unordered_set内部解决冲突采用的是----链地址法。
   

【校招面试 之 C/C++】第19题 C++ STL(一)的更多相关文章

  1. 【校招面试 之 网络】第3题 HTTP请求行、请求头、请求体详解

    1.HTTP请求报文解剖 HTTP请求报文由3部分组成(请求行+请求头+请求体): 下面是一个实际的请求报文: ①是请求方法,GET和POST是最常见的HTTP方法,除此以外还包括DELETE.HEA ...

  2. 【校招面试 之 网络】第2题 TCP的可靠传输、流量控制、滑动窗口

    1.可靠传输 (1)三次握手 TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接: (1)第一次握手:建立连接时,客户端A发送SYN包(SYN=j)到服务器B,并进入SYN_S ...

  3. 【校招面试 之 网络】第1题 TCP和UDP

    TCP UDP1.TCP与UDP基本区别  (1)基于连接与无连接  (2)TCP要求系统资源较多,UDP较少:   (3)UDP程序结构较简单(头只有8个字节:源端口号.目标端口号.长度.差错)   ...

  4. 剑指offer 面试19题

    面试19题: 题目:正则表达式匹配 题:请实现一个函数用来匹配包括'.'和'*'的正则表达式.模式中的字符'.'表示任意一个字符,而'*'表示它前面的字符可以出现任意次(包含0次). 在本题中,匹配是 ...

  5. 记2016腾讯 TST 校招面试经历,电面、笔试写代码、技术面、hr面,共5轮

    (出处:http://www.cnblogs.com/linguanh/) 前序: 距离  2016 腾讯 TST 校招面试结束已经5天了,3月27日至今,目前还在等待消息.从投简历到两轮电面,再到被 ...

  6. 墙裂推荐!2020Android阿里&腾讯&百度&字节&美团校招面试汇总

    基本情况 2021届硕士生,Android开发岗 此文主要是2020年年初春招实习的面试和正式校招面试经验汇总,最终校招拿到了腾讯,百度,美团等offer 主要包括阿里4面,腾讯实习4面和校招4面,字 ...

  7. WEB前端面试选择题解答(共36题)

    第1题 ["1", "2", "3"].map(parseInt) A:["1", "2", &qu ...

  8. UVA.12096 The SetStack Computer ( 好题 栈 STL混合应用)

    UVA.12096 The SetStack Computer ( 好题 栈 STL混合应用) 题意分析 绝对的好题. 先说做完此题的收获: 1.对数据结构又有了宏观的上的认识; 2.熟悉了常用STL ...

  9. 【校招面试 之 C/C++】第9题 C++多态

    C++的多态性用一句话概括就是:在基类的函数前加上virtual关键字,在派生类中重写该函数,运行时将会根据对象的实际类型来调用相应的函数.如果对象类型是派生类,就调用派生类的函数:如果对象类型是基类 ...

随机推荐

  1. 设置redis 密码

    redis配置密码 1.通过配置文件进行配置 yum方式安装的redis配置文件通常在/etc/redis.conf中,打开配置文件找到 [plain] view plain copy require ...

  2. 基于Linux的Samba开源共享解决方案测试(二)

    单NAS网关50Mb码率视音频文件的稳定读测试结果如下: 50Mb/s负载性能记录 NAS网关资源占用 稳定读 稳定读 CPU空闲 内存空闲 网卡占用 13个稳定流 96.70% 10G 104MB/ ...

  3. solr之~模糊查询

    有的时候,我们一开始不可能准确地知道搜索的关键字在 Solr 中查询出的结果是什么,因此,Solr 还提供了几种类型的模糊查询.模糊匹配会在索引中对关键字进行非精确匹配.例如,有的人可能想要搜索某个前 ...

  4. 用dataset保存数据注意的问题

    Private Function Save() As Boolean Try Dim dschgs As DataSet = ds.GetChanges(DataRowState.Added + Da ...

  5. tomcat启动原理

    2018年04月12日 19:55:22 太极小帅帅 阅读数:282   前言 一直在用Tomcat,但是对其启动原理一直没去研究,这里准备去面试,可能会问道.于是总结了下启动原理.完全凭感觉去揣测, ...

  6. TP5常量

    预定义常量 EXT 类库文件后缀(.php) THINK_VERSION 框架版本号 路径常量 DS 当前系统的目录分隔符 THINK_PATH 框架系统目录 ROOT_PATH 框架应用根目录 AP ...

  7. position_css

    position: 定位,元素的定位与这五个属性相关.left,top,bottom,right,z-index 1. static (默认值).没有定位,五个属性都不起作用. 2. inherit ...

  8. 基于OpenGL编写一个简易的2D渲染框架-12 重构渲染器-BlockAllocator

    BlockAllocator 的内存管理情况可以用下图表示 整体思路是,先分配一大块内存 Chunk,然后将 Chunk 分割成小块 Block.由于 Block 是链表的一个结点,所以可以通过链表的 ...

  9. ios 给图片加文字

    - (UIImage*) drawText:(NSString*)text inImage:(UIImage*)image { //prepare image context UIGraphicsBe ...

  10. WP 8.1 status bar

    A status bar is the bar showing signal, battery and time on the top of the phone's screen. In WP8.1 ...