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中的容器介绍的更多相关文章

  1. [C++]STL中的容器

    C++11 STL中的容器 一.顺序容器: vector:可变大小数组: deque:双端队列: list:双向链表: forward_list:单向链表: array:固定大小数组: string: ...

  2. STL中的容器

    STL中的容器 一. 种类: 标准STL序列容器:vector.string.deque和list. 标准STL关联容器:set.multiset.map和multimap. 非标准序列容器slist ...

  3. 算法求解中的变量、数组与数据结构(STL 中的容器)

    本质上算法都是对数据的操作,没有数据,没有存储数据的容器和组织方式,算法就是无源之水无本之木,就是巧妇也难为无米之炊.算法是演员,变量.数组.容器等就是舞台, 然后整个算法的处理流程,都是针对这些数据 ...

  4. C++ STL中常见容器的时间复杂度和比较和分析

    C++ STL中常见容器的时间复杂度 map, set, multimap, and multiset 上述四种容器采用红黑树实现,红黑树是平衡二叉树的一种.不同操作的时间复杂度近似为: 插入: O( ...

  5. C++ STL 中 map 容器

    C++ STL 中 map 容器 Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据 处理能力,由于这个特性,它 ...

  6. STL中常用容器及操作 学习笔记1

    @[TOC](下面介绍STL中常见的容器及操作)## 不定长数组 vector> vetcor:其实就是一个数组或者说是容器 其操作不同于之前直接定义的数组 > 而且可以直接赋值也可以直接 ...

  7. C++STL中map容器的说明和使用技巧(杂谈)

    1.map简介 map是一类关联式容器.它的特点是增加和删除节点对迭代器的影响很小,除了那个操作节点,对其他的节点都没有什么影响.对于迭代器来说,可以修改实值,而不能修改key. 2.map的功能 自 ...

  8. stl中的容器、迭代器和算法----vector中的find实现

    来源 http://blog.csdn.net/huangyimin/article/details/6133650 stl包括容器.迭代器和算法: 容器 用于管理一些相关的数据类型.每种容器都有它的 ...

  9. C++STL 中的容器整体/逐元素操作方法 少写80%for循环

    本文中示例代码默认已引用 std 命名空间 累加 (std::accumulate) accumulate(begin, end, init, op) 返回给定区间内元素的累加值与给定初值的和,初值不 ...

随机推荐

  1. 1816647 - Error "Data file of SAP Note is incomplete" uploading a note in SNOTE

    ymptom When uploading an SAP Note in transaction SNOTE you receive the error "Data file of SAP ...

  2. 初试Python语法小试牛刀之冒泡排序

    Python很火,心里很慌,没吃过猪肉,也要见见猪走路. 看了几天Python的语法,大概初步了解了一点点,https://www.liaoxuefeng.com/wiki/0014316089557 ...

  3. 学习日 day1

    今天第一天开始写博客,希望以后能坚持,每天写,一是记录自己学习的历程,更重要的是复习每天学过的东西. 今天学习的内容:time模块的相关语法 导入方式 首行输入import time即可 time.t ...

  4. Sentinel统计线程,QPS,RT的方式

    一.Sentinel是阿里开源产品,用于流量监控和管理. 二.对于流量控制,可以通过限制线程数和QPS实现限流 1. 资源进入Sentinel的方式 Entry entry = null; try { ...

  5. FortiGate日志设置

    1.默认 FGT5HD3916802737 # config log syslogd setting FGT5HD3916802737 (setting) # show config log sysl ...

  6. FortiGate双链路不同运营商上网配置

    1.防火墙端口配置 2.LLB配置

  7. 大数据OLAP引擎对比

    Presto:内存计算,mpp架构   PB级别数据 presto适合pb级的海量数据查询分析,不是说把pb的数据放进内存,比如一张pb表,查询count,vag这种有个特点,虽然数据很多,但是最终的 ...

  8. JavaSE基础知识(3)—流程控制结构

    一.顺序结构 1.说明 程序从上往下依次执行,中间没有任何跳转或选择2.特点 变量必须遵循 “前向引用” (局部变量必须先声明.赋值,然后再使用!) 二.分支结构(条件) 1.说明 程序从两条或多条路 ...

  9. ASP.NET CORE 2.0 发布到IIS,IIS如何设置环境变量来区分生产环境和测试环境

    0.前言 因为给前端的测试环境是windows,所以要设置windows上的环境变量,如果上Linux就没有这篇文章了,所以大家不要在意为什么core不放在linux上. 1.网上的解决方案 a 方式 ...

  10. Idea创建简单Java Web项目并部署Servlet

    1.打开Idea,创建JAVA Web项目 在WEB-INF目录下创建classes和lib文件夹 配置编译输出路径为刚才新建的classes文件夹 配置依赖jar包加载路径 添加tomcat ser ...