【C++】STL基本介绍


目录

1、什么是STL

2、STL六大组件

2.1容器

2.2算法

2.3迭代器


1、什么是STL

概念:

STL (standard template libaray - 标准模板库):是 C++ 标准库的重要组成部分,不仅是一个可复用的组件库,而且是一个包罗数据结构与算法的软件框架。

通俗来说:STL就是将常见的数据结构(例如 顺序表,链表,栈,队列,二叉树,哈希...)以模板的形式进行封装,使用时,不用我们人为再去写,可以直接调用。并且包含常见的通用的泛型算法(一些常规的算法也不用自己实现,可以直接调用)。

STL从广义上分为:容器(container),算法(algorithm),迭代器(iterator),容器和算法之间通过迭代器进行无缝连接,STL几乎所有的代码都采用了模板类或模板函数

通用的泛型算法两大特性:

通用的:对于任意类型的数据结构都可以处理。(线性表,链表,二叉树....)

模板实现:以模板的方式实现,对于任意数据类型都可以处理。(int/double/short/long.....)

2、STL六大组件

STL大体分为六大组件,分别是:容器,算法,迭代器,仿函数,适配器(配接器),空间配置器

2.1容器

来自百度百科的解释

容器是指用以容纳物料并以壳体为主的基本装置。常用作储存设备或其他化工设备的外壳。主要由壳体、封头、接管、法兰和支座组成。对容器的基本要求是:满足工艺需要;保证操作安全,包括具有足够的强度、刚度以及密封性;耐腐蚀,具有一定的使用寿命;便于制造、安装、维修和使用;成本低,材料节省,尤其要节约不锈钢和有色金属等贵重材料。容器在化工生产中应用广泛,按压力分有真空、常压、外压的压力容器,压力容器又可分低压、中压、高压及超高压容器;按温度分有常温、低温及高温容器;按筒体结构分有单层容器和多层容器;按工艺用途分有储存、分离、反应及换热容器;按厚度分有薄壁和厚壁容器。

STL中的容器就是将运用最为广泛的一些数据结构实现出来,常用的数据结构:数组,链表,树,栈,队列,集合,映射表等。

容器分为序列式容器关联式容器两种。

序列式容器:强调值的排序,序列式容器中的每个元素均有固定的位置

  • string:动态类型的顺序表----只能存储字符----字符串
  • vector :动态类型顺序表
  • array :   静态类型顺序表
  • list:带头结点双向循环链表

关联式容器:二叉树结构,各元素之间没有严格的物理上的顺序关系

  • ...

2.2算法

来自百度百科的解释

算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。如果一个算法有缺陷,或不适合于某个问题,执行这个算法将不会解决这个问题。不同的算法可能用不同的时间,空间或效率来完成同样的任务。一个算法的优劣可以用空间复杂度时间复杂度来衡量。

算法中的指令描述的是一个计算,当其运行时能从一个初始状态和(可能为空的)初始输入开始,经过一系列有限而清晰定义的状态,最终产生输出并停止于一个终态。一个状态到另一个状态的转移不一定是确定的。随机化算法在内的一些算法,包含了一些随机输入。

形式化算法的概念部分源自尝试解决希尔伯特提出的判定问题,并在其后尝试定义有效计算性或者有效方法中成形。这些尝试包括库尔特·哥德尔、Jacques Herbrand和斯蒂芬·科尔·克莱尼分别于1930年、1934年和1935年提出的递归函数阿隆佐·邱奇于1936年提出的λ演算,1936年Emil Leon Post的Formulation 1和艾伦·图灵1937年提出的图灵机。即使在当前,依然常有直觉想法难以定义为形式化算法的情况。

STL中的算法分为质变算法非质变算法

质变算法:运算过程中会更改区间内的元素的内容,例如拷贝,替换,删除等等

  • copy
  • swap
  • replace
  • fill
  • remove
  • permulation
  • partition
  • sort
  • ...

非质变算法:运算过程中不会更改区间内的元素内容,例如查找,计数,遍历,寻找极值等等

  • find
  • search
  • count
  • equal
  • max
  • min
  • ...

2.3迭代器

来自百度百科的解释

迭代器(iterator)有时又称光标(cursor)是程序设计的软件设计模式,可在容器对象(container,例如链表数组)上遍访的接口,设计人员无需关心容器对象的内存分配的实现细节。

迭代器是容器和算法之间的粘合剂,每个容器都有自己专属的迭代器。

种类

功能

输入迭代器

对数据的只读访问

输出迭代器

对数据的只写访问

前向迭代器

读写操作,并能向前推进迭代器

双向迭代器

读写操作,并能向前和向后操作

随机访问迭代器

读写操作,可以以跳跃的方式访问任意数据,功能最强的迭代器

常用的容器中迭代器种类为双向迭代器随机访问迭代器

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值