C++标准模板库理解及总结(STL,Standard Template Library)

  • Post author:
  • Post category:其他




C++标准模板库STL



STL介绍(Standard Template Library)

  • C++中的STL实现了

    数据结构和算法的分离

    ,被包括在C++标准库(C++ Standard Library)中。
  • STL主要实现了对常用的基本数据结构和基本算法进行

    类封装

    ,我们通过创建这些数据对象、调用数据对象用到的方法,简化开发流程。



STL组成部分简介

  • 容器(Container):一些封装的数据结构,例如list、deques、vector、front list等
  • 迭代器(Iterator):为访问容器中的数据而写的一些方法。
  • 算法(Algorithm):为处理容器中的数据而写的一些方法。
  • 仿函数(Functor):实现了函数功能的类。(本质是一个类,里面只实现算法(函数)功能,调用时看着像使用函数,但使用的是类创建对象里面的方法)
  • 适配器(Adaptor):类和类之间转换、合作时,由于代码不兼容,因此需要另一些类代码完成中间转换、合作的“手续”事宜。这些因为克服STL中类代码合作、转换的代码封装称为适配器。
  • 分配器(Allocator):给数据分配内存一些代码。



STL各组成部分详解

  • 容器(Container)

    1.序列式容器(Sequence Container):每个数据都有自己固定的位置,这些位置与数据值无关。

    (1)

    Vector

    :数组形式保存数据,单向数组结构。在Vector中,数组的尾部添加和删除数据快速,但在中部和首部插入数据比较费时。

    (2)

    Deque

    :数组形式保存数据,双向数组结构,在Deque中,数组的头部和尾部添加和删除数据快速,在中部插入数据比较费时。

    (3)

    List

    :双向链表结构,添加删除数据都非常快,修改指针即可。

    2.关联式容器(Associated Container):每个数据的位置不固定,数据的排列方式和数据的值以及这组其他数据值有关。(存在关联)

    (1)

    Set/Multiset

    :内部数据根据其值自动排序,内部由二叉树实现查找。Set中所有值仅出现一次,不存在重复的值;Multiset中可以有多个数值相同的数据。

    (2)

    Map/Multimap

    :内部数据根据其值自动排序,内部由二叉树实现查找。Map中键值和实值一一对应,键值和实值都不能重复出现;Multimap中键值和实值也是一一对应,但可以重复出现相同的键值实值对。

  • 迭代器(Itaerator)

    迭代器是C+



版权声明:本文为qq_44219837原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。