zoukankan      html  css  js  c++  java
  • STL基础知识

    一,STL的组成

    1.什么是STL

      STL(Standard Template Library)标准模板库的简称,是由惠普开发的一系列软件的总称,STL现在是C++的一部分,已经被构建于编译系统之内,所以不需要再引入。

    2.STL的组成部分

    • 容器(containers):是一种数据结构容器,使用类模板的方式提供,我们可以方便的进行数据的存储操作。
    • 适配器(adapters):以序列式容器为基础,提供的栈,队列和优先级队列的这种容器。
    • 迭代器(iterators):类似于指针,用来操作容器的对象。
    • 算法(algorithm):包含一系列的常见算法。
    • 空间配置器(allocator):其中主要工作包括两部分:1,对象的创建与销毁。2,内存的创建与释放。
    • 仿函数(functor):仿函数又称为函数对象,其实就是重载了()操作符的struct,没有什么特别的地方。

    二,STL的容器

    1,序列式容器

    • 每个元素都有固定位置,取决于插入时机和地点。与元素值无关。
    • vector(向量):底层数据结构是数组,可以随机存取数据元素(用索引直接存取),数组的尾部添加和移除元素很快,但在头部和中部插入元素比较耗时。
    • deque(双端队列):底层数据结构是数组,可以随机存取数据元素,在数组的头部和尾部插入和删除元素很快。
    • list(列表):底层数据结构是双向链表,不提供随机存取数据元素(需要按顺序走到要存取的元素),在任何位置插入和删除都很快,只需要简单的移动一下指针。

    2,关联式容器

    • 元素位置取决于特定的排序准则,和插入的顺序无关,底层数据结构为二叉树。
    • set(集合):内部元素依据其值自动排序,set内相同的数值元素只能出现一次。
    • multiset(多重集合):内部元素依据其值自动排序,set内允许出现重复的元素。
    • map(映射):map的元素是成对的键值对,内部元素的值依据键自动排序,键只允许出现一次。
    • multimap(多重映射):多重映射是map的增强版,允许键出现多次。

    三,STL的适配器

    1.什么是适配器

      STL提供了三种适配器stack,queue和priority_queue。这些适配器是包装了序列式容器(vector,deque,list)中的一种。因此所谓的适配器就是序列式容器的包装器,注意:适配器没有提供迭代器。

    2.stack(栈)

      栈可以使用序列式容器中的vector,deque,list中的任意一种作为其底层的数据结构。默认是使用deque来实现的stack。

    3.queue(队列)

      队列可以使用deque和list中的任意一种作为其底层的数据结构。默认是使用deque来实现的queue。

    4.priority_queue(优先队列)

      优先队列也是一种队列,不过在进入队列之后会对元素进行排序,可以使用vector和deque来实现其底层结构,默认是使用vector来实现priority_queue。

    5.序列式容器和适配器比较

      

  • 相关阅读:
    css 浮动元素居中
    盒子绝对定位 position:foxed ; 居中
    一些不常见的css知识
    apache 与php的安装
    dos命令
    php 数据库查询order by 与查询返回的数据类型
    最好花5分钟看一下:辞职后五险一金怎么办
    JDK神坑:JAVA中Calendar的月份Month少1
    三种代理服务器以及反向代理详解
    代理服务器基本知识普及代理IP使用方法!
  • 原文地址:https://www.cnblogs.com/metalsteel/p/6289566.html
Copyright © 2011-2022 走看看