ACM_week3 STL(补充)

STL简述

什么是STL就不多说了,在C++中合理运用STL标准库是非常方便的,对数据结构和一些算法的学习也很有帮助,提供了许多便利。

主要内容

主要包含六个组件,本篇文章主要介绍前三个。

  1. 容器(Container),是一种数据结构,如常用的Vector,List,Deque,Set,Map,等,以模板类的方法提供,为了访问容器中的数据,可使用由容器类输出的迭代器。
  2. 迭代器(Iterator),提供了访问容器中对象的方法,迭代器相当于一个指针。
  3. 算法(Algorithm),是用来操作容器中的数据的模板函数。函数本身与他们的操作的数据的结构和类型无关。
  4. 仿函数,使一个类的使用看上去象一个函数。其实现就是类中实现一个operator(),这个类就有了类似函数的行为,就是一个仿函数类。
  5. 适配器,是一种设计模式,主要分为容器适配器(主要包括:
    stack 默认基于deque容器实现
    queue 默认基于deque容器实现
    priority_queue 默认基于vector容器实现 )
    迭代器适配器、算法适配器(函数适配器)。适配器并不是第一类的容器,因为它们并没有提供与元素的保存形式有关的真正数据结构实现,并且适配器不支持迭代器。但适配器的优点是:能够使程序员选择一种合适的底层数据结构。
  6. 分配器,分配器为为容器再内存中分配空间。容器的一般默认分配器是 std::allocator ,该分配器是一个类模板。对内存空间分配的动作(分配器,new,operator new()等)一般最后都会调用malloc() 。malloc() 再根据不同的操作系统调用其底层的API。同理释放内存对应的free()。

容器介绍

STL 对定义的通用容器分三类:顺序性容器、关联式容器和容器适配器。

  1. 顺序性容器是一种各元素之间有顺序关系的线性表。

  2. 关联式容器是非线性的结构,包含二叉树结构和hash结构。元素在关联容器中没有保存元素置入容器时的逻辑顺序。但是关联式容器提供了另一种根据元素特点排序的功能,这样迭代器就能根据元素的特点“顺序地”获取元素。

  3. 容器适配器:以某种容器作为底部结构,将其接口改变,使得它满足与另一种数据结构的接口,例如借助deque分别实现stack和queue接口,借助vector实现priority_queue接口。

顺序性容器

动态数组vector、双向循环链表list、双向队列deque等。

Vector

在这里插入图片描述

List

在这里插入图片描述

Deque

在这里插入图片描述

关联性容器

集合set、多重集合multiset、map(提供“键-值”关系)、multimap等。

Set

在这里插入图片描述

MultiSet

在这里插入图片描述

Map

声明

#include<map>
//例子
map<int,string>ID_Student;

在这里插入图片描述

MultiMap

在这里插入图片描述

容器适配器

栈stack、队列queue和优先级队列priority_queue。

Stack

经典应用:括号匹配

在这里插入图片描述

Queue

经典应用 报数游戏
在这里插入图片描述

Priority_Queue(自动排序)

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值