1.容器:
各种数据结构:如vector list deque set map,用来存放数据
容器类是容纳、包含一组对象或对象集的对象,通过容器类提供的成员函数可以实现对序列元素的各种操作。

什么是容器?
百度百科:容器是指用以容纳物料并以壳体为主的基本装置。常用作储存设备或其他化工设备的外壳。在C++中,STL提供了大量的容器类。容器类的对象可以认为是“容器”。

容器的种类:
STL容器通常分为三种:序列式容器、关联式容器、容器适配器,(其中容器适配器不能算为真正意义上的容器,严格意义上算为容器的使用类,它是在容器的基础上发展起来的)

  • 序列式容器
string 类似动态顺序表
vector 动态数组类型的顺序表
array(C++11) 静态数组
list 带头节点的双向链表
forward_list 带头节点的单链表
deque 双端对列,类似于二维数组

序列式容器最主要的特点是可以在首端删除元素,在末尾可以插入元素

  • 关联式容器

底层为红黑树:

map 保存<key , value>键值对,key唯一
set 保存 key , key唯一
multimap 保存<key , value>, key不唯一
multiset 保存 key, key不唯一

因为底层为红黑树:所以其遍历是关于 key 有序,查找的时间复杂度为O(log2^N)

底层为哈希结构:

unordered_map 保存<key , value>键值对,key唯一
unordered_set 保存 key , key唯一
unordered_multimap 保存<key , value>, key不唯一
unordered_multiset 保存 key, key不唯一

因为底层为哈希结构:查找的时间复杂度为O(1),用空间换时间。

容器适配器

stack
queue 队列
priority_queue 优先级对列

2.算法
常用的算法有sort search copy erase

3.迭代器
将容器与算法连接起来,也就是所谓的“泛型指针”,常见的迭代器有5中类型,(基本上都是指针相应的一些操作)。operator -> ,operator* , operator++ ,operator-- 等指针相关的操作重载,原生态的指针也算是迭代器(vector的迭代器就为原生态的指针)。

4.仿函数
类似与函数的类,仿函数基本上可以看作是将operator()的操作进行了重载。

5.容器适配器

6.配置器
负责空间的配置与管理,配置器实现了动态空间的配置,管理,释放。

STL六大组件的交互关系
容器通过空间适配器来获取空间,算法通过迭代器存取容器中的内容,仿函数协助算法完成一些操作,容器适配器修饰仿函数。

STL六大组件 功能与运用(略写)相关推荐

  1. STL —— STL六大组件

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

  2. (P72)stl(一):泛型程序设计,什么是STL,STL六大组件及其关系

    文章目录 1.泛型程序设计 2.什么是STL 3.STL六大组件及其关系 1.泛型程序设计 泛型编程(generic programming) 类属编程 将程序写得尽可能通用 将算法从数据结构中抽象出 ...

  3. 详解 C++ STL 六大组件,看完不懂打我...

    STL 提供了六大组件,彼此组合套用协同工作.这六大组件分别是: 容器(Containers):各种数据结构,如 vector.list.deque.set.map 等.从实现的角度来看,容器是一种 ...

  4. STL——STL简介、STL六大组件

    一.STL是什么 STL(standard template library):         C++标准模板库,是C++标准库的重要组成部分,不仅是一个可复用的组件库,还是一个包罗数据结构与算法的 ...

  5. [STL]六大组件介绍(目录 全)

    一般介绍 STL(Standard TemplateLibrary),即标准模板库,是一个具有工业强度的,高效的C++程序库.它被容纳于C++标准程序库(C++ Standard Library)中, ...

  6. STL学习_(一)STL简介-STL六大组件简介

    一.什么是STL 1.STL(Standard Template Library),即标准模板库,是一个高效的C++程序库. 2.包含了诸多在计算机科学领域里常用的基本数据结构和基本算法.为广大C++ ...

  7. STL六大组件:分配器、容器、迭代器、算法、仿函数、适配器

    来自 侯捷<STL源码剖析> 转载于:https://www.cnblogs.com/madison/archive/2012/05/23/2515574.html

  8. 泛型编程、STL的概念、STL模板思想及其六大组件的关系,以及泛型编程(GP)、STL、面向对象编程(OOP)、C++之间的关系

    介绍STL模板的书,有两本比较经典: 一本是<Generic Programming and the STL>,中文翻译为<泛型编程与STL>,这本书由STL开发者 Matth ...

  9. STL标准库六大组件

    2019独角兽企业重金招聘Python工程师标准>>> STL六大组件简介 1.容器(Containers):各种数据结构,如Vector,List,Deque,Set,Map,用来 ...

最新文章

  1. Xtreme.Toolkit.Pro编译简单教程
  2. 究竟使用什么样的万向轮?
  3. Python后端相关技术/工具栈
  4. 使用TensorFlow的基本步骤
  5. Elasticsearch 5.0 —— Head插件部署指南
  6. 成功解决Future Warning: The sklearn.neighbors.dist_metrics module is deprecated in version 0.22 and wil
  7. 在Win2003中安装bind【部署智能DNS】
  8. Lua基础之math(数学函数库)
  9. 阿里云CentOS6.3 安装MongoDB教程
  10. Linux编程练习 --多线程1--线程创建
  11. 有关代码段、数据段、BOSS段、堆、栈的存储位置问题。。。
  12. 新零售大潮下 联想与BHG Mall签约共建智慧商城
  13. php mysql插入多个列_php mysql插入多条记录
  14. TSC打印机,使用java打印二维码
  15. 阿里云活动价格点击购买时价格上涨的解决办法
  16. 数据中心 服务器 电压,数据中心和通信机房,需要这样的功率器件……
  17. Win7定时任务——提醒自己喝水
  18. 玩客云:更好的迅雷从“共享计算”开始
  19. excel任意单元格中自动插入页码和总页数
  20. K8S集群Pod资源自动扩缩容方案

热门文章

  1. 树莓派3B+ (PPOE+hostapd)变身无线路由器
  2. HDU 2571(dp)题解
  3. zabbix 之 配置iptables允许10050端口
  4. ForkJoin 学习使用笔记
  5. 在ECSHOP后台左侧导航中增加新菜单
  6. html 关于一行两列 高度不定的实现(不用table)
  7. MS DOS 命令大全
  8. 【讨论】对技术的掌握到底应该又多深?
  9. 最近用到的浏览器兼容javascript总结
  10. 设计mysql存储过程,MySQL的存储过程设计的例子