1.什么是STL?

STL英文全称 standard template library,中文可译为标准模板库或者泛型库,其包含有大量的模板类和模板函数,是 C++ 提供的一个基础模板的集合,用于完成诸如输入/输出、数学计算等功能。

虽说STL主要出现到C++中,但在被引入C++之前该技术就已经存在了很长时间。STL的代码从广义上讲分为三类:algorithm(算法)、container(容器)和iterator(迭代器),几乎所有的代码都采用了模板类和模板函数的方式,这相比于传统的由函数和类组成的库来说提供了更好的代码重用机会。

STL 最初由惠普实验室开发,于 1998 年被定为国际标准,正式成为 C++ 程序库的重要组成部分。值得一提的是,如今STL 已完全被内置到支持 C++ 的编译器中,无需额外安装,这可能也是 STL 被广泛使用的原因之一。

在C++标准中,STL被组织为下面的13个头文件:

<algorithm>
<deque>
<functional>
<iterator>
<vector>
<list>
<map>
<memory>
<numeric>
<queue>
<set>
<stack>
<utility>

2.STL六大组件简介

容器:各种数据结构,如vector、list、deque、set、map等,用来存放数据,从实现角度来看,STL容器是一种class
template。
算法:各种常用的算法,如sort、find、copy、for_each。从实现的角度来看,STL算法是一种function
tempalte.
迭代器:扮演了容器与算法之间的胶合剂,共有五种类型,从实现角度来看,迭代器是一种将operator* , operator-> ,operator++,operator–等指针相关操作予以重载的class template.所有STL容器都附带有自己专属的迭代器,只有容器的设计者才知道如何遍历自己的元素。原生指针(native pointer)也是一种迭代器。
仿函数:行为类似函数,可作为算法的某种策略。从实现角度来看,仿函数是一种重载了operator()的class 或者class
template
适配器:一种用来修饰容器或者仿函数或迭代器接口的东西。
空间配置器:负责空间的配置与管理。从实现角度看,配置器是一个实现了动态空间配置、空间管理、空间释放的class tempalte.

STL函数库的讲解(1)相关推荐

  1. C++ STL函数库 vector(henu.hjy)

    我们需要明白vector这是个什么?? 答:通俗而言--一个长度根据所需自动改变的数组,同时还可以用于以邻接表的方式进行存储图 使用前提: 头文件#include <vector> 使用C ...

  2. C++ STL函数库 stack (henu.hjy)

    栈是一个先进后出的限制性的数据结构,注释中列出了常见的stack的函数 #include <iostream> #include <stack>using namespace ...

  3. C++ STL函数库 pair (henu.hjy)

    就用法见注释,有需要可复制到编译器运行 #include <iostream> #include <utility> //当然也可以用map #include <stri ...

  4. 【Android RTMP】Android Studio 集成 x264 开源库 ( Ubuntu 交叉编译 | Android Studio 导入函数库 )

    文章目录 安卓直播推流专栏博客总结 一. x264 简介 二. x264 交叉编译 三. Android Studio 导入函数库 四. 交叉编译版本 五. GitHub 项目地址 安卓直播推流专栏博 ...

  5. C++ STL模板库用法查询及一些常见面试题(自用)

    C++STL模板库 文章目录 C++STL模板库 用法查询 Array 1.使用 2.创建 3.成员函数 Vector 1.使用 2. 创建 3.成员函数 deque 1.使用 2. 创建 3.成员函 ...

  6. C++拾取——使用stl标准库实现排序算法及评测

    今天看了一篇文章,讲各种语言的优势和劣势.其中一个观点:haskell非常适合写算法,因为使用者不用去关心具体的计算机实现,而只要关注于操作语义.这让它在专心研究算法的人中非常受欢迎.所以很多时候,语 ...

  7. 【Android FFMPEG 开发】FFMPEG 交叉编译配置 ( 下载 | 配置脚本 | 输出路径 | 函数库配置 | 程序配置 | 组件配置 | 编码解码配置 | 交叉编译配置 | 最终脚本 )

    文章目录 一.FFMPEG 源码下载 解压 二.交叉编译工具 三.configure 脚本及帮助命令 四.配置 configure 脚本 五.输出目录配置 六.函数库配置 七.程序配置选项 八.组件配 ...

  8. keil lib 只调用自己的函数_C语言学习篇(28)——函数库

    引言 我们在编写代码时,常常会写一个.c源文件和与之对应的.h文件(例如a.c和a.h),并在源文件.c中定义(具体实现)一些函数,在.h文件中声明, 这样我们就可以在其他源文件中包含该头文件,来调用 ...

  9. C运行库和C语言函数库/Microsoft C运行库

    C运行库和C语言函数库/Microsoft C运行库 2009-03-04 10:27 973人阅读 评论(0) 收藏 举报 c语言librarydll编译器fortran 1.C运行库和C语言函数库 ...

最新文章

  1. linux yum配置文件 yum.conf 简介
  2. Linux grep命令——文本搜索工具
  3. 《数据分析变革:大数据时代精准决策之道》一第一部分 变革已然开始
  4. Scalaz(27)- Inference Unapply :类型的推导和匹配
  5. 2019 ASP.NET Core 之微调查报告,新鲜出炉
  6. android token机制_你真的了解16.6ms刷新机制吗?
  7. sqlserver服务启动失败_条码打印软件连接SQL数据库出现TCP连接失败解决办法
  8. [转载] Python Web开发最难懂的WSGI协议,到底包含哪些内容? WSGI服务器种类和性能对比
  9. love2d游戏1--1942game(一)
  10. Windows程序设计的第一个实例
  11. CFS三层靶机搭建及其内网渗透
  12. Linux关闭桌面进程,Centos进入桌面和退出桌面的方法
  13. 四、守护线程 deamon
  14. Android 调用Gmail发送邮件
  15. v-text 丶v-html丶v-bind
  16. Shader光照模型-高光反射
  17. 互联网让我的人生逆袭
  18. 7.3 pgfplots点集
  19. Android9很多游戏玩不了,不玩会后悔 目前最火的9款Android游戏(2)
  20. Linux守护进程编写

热门文章

  1. 陕西被欠薪特岗教师收到部分补发工资 纪委介入
  2. Python基础知识之容器类型
  3. HA historyserver错误日志java.lang.RuntimeException: java.io.IOException: Couldn‘t create proxy provid nu
  4. Web前端开发的五大核心技能
  5. android写qq动态界面,Android_Android仿QQ空间主页面的实现,今天模仿安卓QQ空间,效果如 - phpStudy...
  6. 关于useEffect在组件结束销毁时使用记录
  7. 【WPF绑定2】 ComboBox SelectedValue复杂数据类型绑定
  8. 15100364杨舒雅
  9. 智能车的电机驱动DRV8833、DRV8833驱动直流电机、DRV8833接线图、DRV8833 PWM、DRV8833驱动代码
  10. vue ali-oss 视频上传封装组件