STL中的容器介绍
STL中的容器主要包括序列容器、关联容器、无序关联容器等。
一】序列容器
(1) vector
vector 是数组的一种类表示,提供自动管理内存的功能,除非其他类型容器有更好满足程序的要求,否则,我们
应默认使用这中容器。
(2) deque
deque 表示双端队列,在STL中,其实现类似于vector,支持随机访问。主要区别在于使用deque在开始位置插入和删除元素的时间
是固定的,所以如果多数操作发生在序列的起始和结尾处,应考虑使用deque结构。
(3) list
list表示双向链表。list和vector之间关键的区别在于,list在链表中任一位置进行插入和删除时间都是固定的。list强调的是快速的插入和删除,
而vector强调的是快速地随机访问。list不支持数组表示法和随机访问
(4)forward_list
它实现了单链表,只需要正向迭代器,属于不可反转的的容器。
(5)queue
queue模板类是相当于一个适配器,它让底层类(默认为deque)展示典型的队列接口。它的使用限制要比deque多,不允许随机访问队列元素,
甚至不允许遍历队列。
(6)priority_queue
该模板类是另一个适配器类,它支持的操作与queue类似,主要区别在于priority_queue使用时,最大的元素被移到队首;
底层类默认是vector。可以修改用于确定哪个元素放到队首的比较方式,方法是提供一个可选的构造函数参数。
(7)stack
与queue类似,stack也是一个适配器类,它给底层类(默认为vector)提供了典型的栈接口。
(8)array
虽然模板类array不是STL容器,但还是可以将很多标准的STL算法用在array对象上,如copy、for_each。
二】关联容器
最简单的关联容器就是set,它的值类型与键相同,键是唯一的,对于set来说,值就是键,multiset类似于set,只是可能有多个值的键相同。
在map中,值与键的类型不同,键是唯一的,每个键只对应一个值,multimap与map类似,只是一个键可以与多个值关联。
三】无序关联容器
与关联容器一样,无序关联容器也将值与键关联起来,并使用键来查找值。但是底层的差别在于,关联容器是基于树结构的,而无序关联容器是
基于数据结构哈希表的,旨在提高添加和删除元素的速度以及提高查找算法的效率。主要有4种无序关联容器,unordered_set、unordered_multiset
unordered_map、unordered_multimap。
STL中的容器介绍的更多相关文章
- [C++]STL中的容器
C++11 STL中的容器 一.顺序容器: vector:可变大小数组: deque:双端队列: list:双向链表: forward_list:单向链表: array:固定大小数组: string: ...
- STL中的容器
STL中的容器 一. 种类: 标准STL序列容器:vector.string.deque和list. 标准STL关联容器:set.multiset.map和multimap. 非标准序列容器slist ...
- 算法求解中的变量、数组与数据结构(STL 中的容器)
本质上算法都是对数据的操作,没有数据,没有存储数据的容器和组织方式,算法就是无源之水无本之木,就是巧妇也难为无米之炊.算法是演员,变量.数组.容器等就是舞台, 然后整个算法的处理流程,都是针对这些数据 ...
- C++ STL中常见容器的时间复杂度和比较和分析
C++ STL中常见容器的时间复杂度 map, set, multimap, and multiset 上述四种容器采用红黑树实现,红黑树是平衡二叉树的一种.不同操作的时间复杂度近似为: 插入: O( ...
- C++ STL 中 map 容器
C++ STL 中 map 容器 Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据 处理能力,由于这个特性,它 ...
- STL中常用容器及操作 学习笔记1
@[TOC](下面介绍STL中常见的容器及操作)## 不定长数组 vector> vetcor:其实就是一个数组或者说是容器 其操作不同于之前直接定义的数组 > 而且可以直接赋值也可以直接 ...
- C++STL中map容器的说明和使用技巧(杂谈)
1.map简介 map是一类关联式容器.它的特点是增加和删除节点对迭代器的影响很小,除了那个操作节点,对其他的节点都没有什么影响.对于迭代器来说,可以修改实值,而不能修改key. 2.map的功能 自 ...
- stl中的容器、迭代器和算法----vector中的find实现
来源 http://blog.csdn.net/huangyimin/article/details/6133650 stl包括容器.迭代器和算法: 容器 用于管理一些相关的数据类型.每种容器都有它的 ...
- C++STL 中的容器整体/逐元素操作方法 少写80%for循环
本文中示例代码默认已引用 std 命名空间 累加 (std::accumulate) accumulate(begin, end, init, op) 返回给定区间内元素的累加值与给定初值的和,初值不 ...
随机推荐
- flask&nginx&gunicore部署
部署流程: 1.处理服务器的基础环境, 安装和Python有关的软件 安装Python3-pip, Python3-dev apt install python3-pip apt install py ...
- 装饰器 -- 函数装饰器(tornado异常响应装饰器)
# 值可变,每次使用需要重新赋值 ERR_RESP_TEMPLATE = {"state": "FAILED", "error": None ...
- Python 进行查询日志查询条件分析
任务:crm日志的查询条件 每次是哪几个字段查,有几种组合 ,统计每种组合查询的量 日志样例: -- ::] -- ::] 查询条件:query查询条件可以多个,用|and|分割. 步骤: 1.正则 ...
- 去“BAT”这样面试,拿到offer的几率是80%(转)
一.概述面试,难还是不难?取决于面试者的底蕴(气场+技能).心态和认知及沟通技巧.面试其实可以理解为一场聊天和谈判,在这过程中有心理.思想上的碰撞和博弈.其实你只需要搞清楚一个逻辑:“面试官为什么会这 ...
- CDialogEx::OnPaint()的问题,或者为什么在对话框程序的OnPaint中绘图无效的问题
这是一个基于对话框的程序,对话框上有按钮,还有几个CStatic用来绘图,之前都是好好的,今天改成Unicode版本后,编译正常,运行时CStatic中的图像怎么也不显示,有时候会闪现一次就消失,问题 ...
- 微信小程序--getLocation需要在app.json中声明permission字段
在微信小程序开发中,需要获取用户所在地理位置,结果提示‘getLocation需要在app.json中声明permission字段’ 这是因为开发者需要填写获取用户地理位置的用途说明. 具体解决方法: ...
- cdnbest站点里设置防盗链
设置需求只允许 test.kangleweb.com 访问 ,其他网站链接全部拒绝 (注:如果test.kangleweb.com是用https访问,那引用的内容地址www447.yivpn.cn也 ...
- Zabbix安装部署(CentOS系统下)
zabbix(音同 zæbix)是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案. zabbix能监视各种网络参数,保证服务器系统的安全运营:并提供灵活的通知机制以让系统 ...
- 本机连接Spark Standalone--最简单的spark调试方式
为了既能远程连接spark 查看ui 又能本地练习 安装简单 去官网 http://spark.apache.org/downloads.html 选择对应版本下载 tar包 解压 tar ...
- 前端移动开发之rem
前言 作为一名前端工程师,我们不仅要会PC端开发,还要会移动端开发,而且现在移动端占据主要流量,所以掌握移动端开发的技能更是必须的. 那么进行移动端的开发,什么是必须,我们想要的效果是什么? 自适应. ...