标准模板-STL简介

俗话说的好:工欲善其事必先利其器,而C++为我们提供了一个高效的C++程序库即:STL(Standard Template Library),STL是所有C++编译器和所有操作系统平台都支持的一种库

STL组成

  • 容器
  • 迭代器
  • 算法
  • 函数对象
  • 适配器
  • 空间配置器
1.容器
序列式容器

序列容器以线性序列的方式存储元素。它没有对元素进行排序,元素的顺序和存储它们的顺序相同
array<T,N>(数组容器) 是一个长度固定的序列,有 N 个 T 类型的对象,不能增加或删除元素。
vector(向量容器) 是一个长度可变的序列,用来存放 T 类型的对象。必要时,可以自动增加容量,但只能在序列的末尾高效地增加或删除元素。
deque(双向队列容器) 是一个长度可变的、可以自动增长的序列,在序列的两端都不能高效地增加或删除元素。
list(链表容器) 是一个长度可变的、由 T 类型对象组成的序列,它以双向链表的形式组织元素,在这个序列的任何地方都可以高效地增加或删除元素。访问容器中任意元素的速度要比前三种容器慢,这是因为 list 必须从第一个元素或最后一个元素开始访问,需要沿着链表移动,直到到达想要的元素。
各容器相应特点:
在这里插入图片描述

关联式容器

元素位置取决于特定的排序准则,和插入顺序无关,set、multiset、map、multimap等。
Set/Multiset: 内部的元素依据其值自动排序,Set内的相同数值的元素只能出现一次,Multisets内可包含多个数值相同的元素,内部由二叉树实现,便于查找;
Map/Multimap: Map的元素是成对的键值/实值,内部的元素依据其值自动排序,Map内的相同数值的元素只能出现一次,Multimaps内可包含多个数值相同的元素,内部由二叉树实现,便于查找;
容器类自动申请和释放内存,无需new和delete操作。

2.迭代器

提供了访问容器中对象的方法。例如,可以使用一对迭代器指定listvector中的一定范围的对象。迭代器就如同一个指针。事实上,C++的指针也是一种迭代器。但是,迭代器也可以是那些定义了operator*()以及其他类似于指针的操作符地方法的类对象;

3.算法

是用来操作容器中的数据的函数模板。
例如,STL用 sort() 来对一个vector中的数据进行排序,用 find() 来搜索一个list中的对象。

4.函数对象

所谓函数对象(function object)是重载了函数调用操作符(funiton-call operator())的对象,函数对象的优势在于能很好的满足STL的抽象要求

5.适配器

将一个class的接口转换为另一个class的接口,使得原本因接口不兼容而不能合作的classes可以一起运作。
分为:容器适配器,迭代器适配器,函数对象适配器

6.空间适配器

动态内存空间的分配和回收工作
详情可以参考:https://blog.csdn.net/u010183728/article/details/81913729#2.1%20%E5%AE%B9%E5%99%A8

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值