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.序列式容器和适配器比较

      

  • 相关阅读:
    Best Practices for Using Alpha
    Android手机 Fildder真机抓包
    Android调用MediaScanner进行新产生的媒体文件扫描
    读书笔记-----Java并发编程实战(二)对象的共享
    项目经验谈---IM新消息界面刷新异常处理记录
    读书笔记-----Java并发编程实战(一)线程安全性
    OnScroll与OnTouchEvent方法的区别与联系
    View的getLeft, getRight, getTop, getBottom
    如何用DNS+GeoIP+Nginx+Varnish做世界级的CDN
    更改ubuntu mysql data目录位置
  • 原文地址:https://www.cnblogs.com/metalsteel/p/6289566.html
Copyright © 2011-2022 走看看