STL介绍

概念
STL(standard Template Library,标准模板库)是惠普实验室开发的一些人软件的统称。
STL从广义上分为三类:algorithm(算法)、container(容器)、iterator(迭代器),容器和算法通过迭代器可进行无缝地连接,代码采用模板类和模板函数,便于代码重用
在C++中,STL中涉及的头文件;
在这里插入图片描述
STL六大组件
容器(Container)、算法(Algorithm)、迭代器(iterator)、仿函数(Function object)、适配器(Adaptor)、空间配置器(allocator);
STL优势

  • STL是C++的一部分,被内建在编译器之内;
  • STL实现数据结构和算法的分离,使得STL变得通用;
  • 不用思考STL具体实现过程,只要能够熟悉使用STL;
  • STL具有高可重用性,高性能、高移植性、跨平台的优势;

容器
经典的数据结构数量有限,但是常重复编写代码实现向量、链表等结构,代码相似,只为了适应不同数据变化而在细节上有所出入。STL容器允许重复利用现有的结构来实现用户特定类型的数据结构,通过设置模板参数指定容器中元素的数据类型,简化构造数据类型的工作;
容器部分主要头文件<> vector,list,deque,set,map,stac>,queue组成;
容器指用来管理一组元素;
在这里插入图片描述
容器分类
序列式容器(Sequence container)
每个元素都有固定位置–取决于插入时机和地点,和元素值无关,如vector、deque、list;
关联式容器(Associated container)
元素位置取决特定的排序准则,和插入顺序无关,如set、multiset、map、multimap;

在这里插入图片描述

迭代器
软件设计有一个基本原则,**所有问题可通过引进一个间接层来简化,STL中使用迭代器来完成;迭代器在STL中用来讲算法和容器联系起来,算法可通过迭代器存取元素序列进行工作,每个容器定义了其本身所专用的迭代器,用于存取容器中的元素
迭代器部分主要由头文件<…> utility、iterator、memory组成。
utility 是一个很小的头文件,它包括了贯穿使用在STL中的几个模板的声明;
iterator 中提供了迭代器使用的许多方法;
memory 以不同寻常的方式为容器中的元素分配存储空间,同时也为某些算法执行期间产生的临时对象提供机制,其中主要部分是模板类allocator,它负责产生所有容器中的默认分配器;

算法
STL中提供了约100个实现算法的模板函数,如算法for_each将为指定序列中的每一个元素调用指定的函数,stable_sort以所指定的规则对序列进行稳定性排序等;
算法部分主要头文件algorithm、numeric、 functional组成。
algorithm 是所有STL头文件中最大的一个,它是由一个堆模板函数组成的,且每个函数在很大程度上是独立的,其中常用如比较、交换、查找、遍历操作、复制、修改、移除、反转、排序、合并等
numeric 体积很小,只包括几个序列上进行简单数学运算的模板函数,如加法、乘法在序列上的一些操作
functional 中定义了一些模板类,用以声明函数对象

C++标准库
C++具有丰富的类库及库函数资源,开发时,可领用标准库完成。

C++标准库的头文件分类

  • 与语言支持功能相关
  • 支持流输入输出
  • 与诊断功能相关
  • 定义工具函数的头文件
  • 支持字符串处理 、迭代器容器
  • 定义容器类模板
  • 有关算法 、有关数值操作、有关本地化

C++标准库所有头文件都没有扩展名,以cname 形式的标准头文件提供。在cname形式标准的头文件中,与宏相关的名称在全局作用域中定义,其他名称在std命名空间中声明,还可以使用name.h形式的标准C库头文件名。

模板
模板能实现代码重用机制,将类型参数化,即把类型定义为参数;
C++提供两种模板:函数模板、类模板;
函数模板简介

  • 函数模板建立了通用的函数,其函数返回类型和形参类型不具体指定,用虚拟的类型来代表;
  • 函数体相同的函数都可用函数模板来代替,不必定义多个函数,只需在模板中定义一次。
  • 调用函数时系统会根据实参类型来取代模板中的虚拟类型,实现不同函数功能。

类模板简介

  • 与函数模板类似,类模板建立一个通用类,其数据成员的类型、成员函数的返回类型和参数类型都可以不具体指定,用虚拟类型来代表。
  • 当使用类模板建立对象时,系统会根据实参的类型取代模板中的虚拟类型,实现不同类的功能

C++ STL详解

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值