C++STL理论基础

开发工具与关键技术:C++、VisualStudio
作者:何任贤
撰写时间:2019年08月16日
STL(StandardTemplateLibrary,标准模板库)是惠普实验室开发的一系列软件 的统称。

现然主要出现在 C++中,但在被引入 C++之前该技术就已经存在了很长 的一段时间。 STL
的从广义上讲分为三类:algorithm(算法)、container(容器)和 iterator (迭代器),
容器和算法通过迭代器可以进行无缝地连接。几乎所有的代码都采 用了模板类和模板函数
的方式,这相比于传统的由函数和类组成的库来说提供了 更好的代码重用机会。在 C++标
准中,STL 被组织为下面的 13 个头文 件: 、、、
、、、、、 、、、
和。


上图是指算法、迭代器和容器的关系

STL的六大组件:

  1. 容器(Container) //相当于链表
  2. 算法(Algorithm)
    1. 迭代器(Iterator) //相当于指针
  3. 仿函数(Functionobject)
  4. 适配器(Adaptor)
  5. 空间配制器(allocator)

那么使用STL有什么好处:

  1. STL是C++的一部分,因此不用额外安装什么,它被内建在你的编译器之内。
  2. STL的一个重要特点是数据结构和算法的分离。尽管这是个简单的概 念,但是这种分
    离确实使得 STL 变得非常通用。 例如,在 STL的 vector 容器中,可以放入元素、基
    础数据类型变量、元素 的地址; STL的sort()函数可以用来操作 vector,list 等容器。
  3. 我们可以不用思考 STL 具体的实现过程,只要能够熟练使用 STL 就 OK 了。这样我
    们就可以把精力放在程序开发的别的方面。
  4. STL 具有高可重用性,高性能,高移植性,跨平台的优点。
    5.高可重用性:STL 中大多数的代码都采用了模板类和模版函数的方式实现。
    6.高性能:如 map 可以高效地从十万条记录里面查找出指定的记录,因为 map 是采用
    红黑树的变体实现的。(红黑树是平横二叉树的一种)
    7.跨平台:如用 windows的 Visual Studio编写的代码可以在Mac OS 的XCode 上直接
    编译。

关于STL三类概述

  1. 容器的概念:用来管理一组元素,容器分为两类分别是序列式容器(Sequence containers)和关联式容器(Associated containers)

序列式容器的特点:
每个元素都有固定位置--取决于插入时机和地点,和元素值无关。
序列式容器有三种分别是vector 、 deque 、 list
实现头文件的头文件分别是、、

关联式容器的特点:
元素位置取决于特定的排序准则,和插入顺序无关
序列式容器有四种分别是set 、 multiset 、 map 、 multimap
实现头文件的头文件分别是 、、、

  1. 迭代器的概念:迭代器在STL中用来将算法和容器联系起来,起着一种黏和剂的作用,每一个容器都定义了其本身所专有的迭代器,用以存取容器中的元素。
    迭代器部分主要由头文件, 和 组成。
    是一个很小的头文件,它包括了贯穿使用在 STL 中的几个模板的声明。
    主要提供了迭代器使用的许多方法。
    主要部分是模板类 allocator,它负责产生所有容器中的默认分配器,并
    且为容器中的元素分配存储空间,同时也为某些算法执行期间产生的临时对象提供
    机制。

  2. 算法:STL 提供了大约 100 个实现算法的模版函数,只要熟悉了 STL 之后,许多代
    码可以被大大的化简,只需要通过调用一两个算法模板,就可以完成所需要的功能并
    大大地提升效率。
    算法部分主要由头文件,和组成,
    是所有 STL 头文件中最大的一个,它是由一大堆模版函数组成的。

C++STL理论基础相关推荐

  1. C++之STL理论基础

    1.基本概念 STL(Standard Template Library,标准模板库)是惠普实验室开发的一系列软件的统称.虽然主要出现在C++中,但在被引入C++之前该技术就已经存在了很长的一段时间. ...

  2. c++STL(标准模板库)理论基础

    标准模板库理论基础 基本概念 STL详细的说六大组件 使用STL的好处 容器 容器的概念 容器的分类 迭代器 算法 C++标准库 标准库中与语言支持功能相关的头文件 支持流输入/输出的头文件 与诊断功 ...

  3. STL(标准模板库)理论基础与容器

    10.1 STL(标准模板库)理论基础 10.1.1基本概念 STL(Standard Template Library,标准模板库)是惠普实验室开发的一系列软件的统称.现然主要出现在C++中,但在被 ...

  4. STL学习系列一:STL(标准模板库)理论基础

    STL(Standard Template Library,标准模板库)是惠普实验室开发的一系列软件的统称.现然主要出现在C++中,但在被引入C++之前该技术就已经存在了很长的一段时间. STL的从广 ...

  5. 10、STL实用技术专题

    10.STL实用技术专题 10.1STL(标准模板库)理论基础 10.1.1基本概念 #include <iostream> #include <vector> #includ ...

  6. STL库(C++11)提供的异步执行方法的方式

    在进行并发编程的时候难免会遇到异步执行时候,现代C++标准库提供了几种异步执行的方式,本文收集整理了一下,以备将来翻阅. Thread方式 Thread 是STL提供的一种快捷创建线程的方式,极大方便 ...

  7. C++ 笔记(24)— STL map 类(map实例化、插入、查找、删除)

    1. STL 映射类简介 map 和 multimap 是键-值对容器,支持根据键进行查找,区别在于,后者能够存储重复的键,而前者只能存储唯一的键. 为了实现快速查找, STL map 和 multi ...

  8. C++ 笔记(23)— STL vector 类(实例化 vector、末尾插入、指定位置插入、数组方式访问元素、指针方式访问元素、删除元素、大小与容量区别)

    1. vector 特点 vector 是一个模板类,提供了动态数组的通用功能,具有如下特点: 在数组末尾添加元素所需的时间是固定的,即在末尾插入元素的所需时间不随数组大小而异,在末尾删除元素也如此: ...

  9. C++ 笔记(22)— STL string 类(字符串赋值、访问、拼接、查找、翻转、大小写转换)

    1. 实例化和赋值 STL string #include <string> #include <iostream>int main () {using namespace s ...

最新文章

  1. 互联网10年,激战如梦
  2. 图解Windows下开发Objective-C程序之一 - 搭建Objective-C开发环境
  3. .NET开发的一些积累
  4. Charm Bracelet
  5. python自动化数据报告_如何:使用Python将实时数据自动化到您的网站
  6. 数据库信息 (表名 行数 堆 集群 非聚集)的查询
  7. c语言折半排序的程序,C语言实现九大排序算法的实例代码
  8. Django2 SQLite3迁移到MySQL数据库
  9. window-linux移植
  10. 数据结构 - 字符串的模式匹配
  11. Win7性能优化:解决多核处理器兼容问题
  12. 中国的码农们,沉睡了20年,该醒醒了
  13. 银行计算机储蓄系统程序流程图,银行储蓄系统流程图.doc
  14. VMware 设置虚拟机全屏
  15. 基于科大讯飞AIUI平台自定义语义库的开发
  16. 本世纪惊心动魄的粮食战争,中国反败为胜:陈思进--20190701
  17. 邹宇阳:仅成立8个月的个人网站如何月收入几十万美金
  18. 【批量行驶证识别】如何批量行驶证OCR识别行驶本行车本图片或复印件并导出至excel表格或文本格式,下面教你方法
  19. JAVA JComboBox的监听事件(ActionListener、ItemListener)
  20. android播放mp3方法,Android MediaPlayer 播放音频的方式

热门文章

  1. 机器学习sklearn19.0聚类算法——Kmeans算法
  2. centos 6 防火墙开启端口无效问题
  3. Sublime Text 3快捷键汇总
  4. 关于积累-accumulation
  5. 微软推出Windows XP SP3中文版
  6. Python:错误FileNotFoundError: [Errno 2] No such file or directory: 'objects/epsilon.pkl
  7. css hack方法,css hack怎么应用
  8. c语言和其他高级语言一样也要经过编译,C语言和其他高级语言的最大的区别是什么?...
  9. Python 脚本错误:IndentationError: unindent does not match any outer indentation level
  10. 【算法】一个简单的支持向量机(SVM)原理