STL介绍

STL(Standard Template Library),是C++标准库的一部分。包括5个组件:

  • 算法(algorithm)
  • 容器(container)
  • 迭代器(iterator)
  • 函数(function)
  • 适配器(adapter)

模板(template)是C++语言的一个优势,而标准模板库正是基于此。

1.容器(container)

STL包含了序列式容器(sequence container)和关联式容器(associative container)。

序列式容器有vector, deque,list:

容器

数据描述

vector1. 动态数组,可替代C++内置数组,vector可以如同数组一样的访问方式,例如使用下标(subscript)运算符,并记得自己的长度信息(size),也可以使用对象的访问方式访问vector(push、pop)。使用vector可以轻易地定义二维可调整型数组。
2. vector可在常量时间内完成在vector末尾插入/删除元素,但在vector中间或开头插入/删除元素,则需要线性时间。
list 1. 是一个有序的数据结构,每个元素中存储着上一个元素和下一个元素的指针,因此是一个双向链接的链表。
2. 与vector相比,其元素的访问速度较慢,而插入和删除元素较快。
deque 双端队列,可看做为能在常量时间内完成向开头或结尾插入或删除元素的vector,但是修改之后,其迭代器的有效性就无法得到保障。

关联式容器有set,multiset,map,multimap:

容器

数据描述

set集合。
multiset 跟set具有相同功能,但允许有重复的元素。
map 关联数组,每个元素含有两个数据项,map将一个数据项映射到另一个数据项中。
multimap 跟map具有相同功能,但允许重复的键值。
hash_set
hash_multiset
hash_map
hash_multimap
1. 分别类似于集合、多重集合、映射、多重映射。但是,使用hash_table实现。它的键(keys)没有排序,但是必须存在一个对键值的哈希函数。
2. 这些容器并不是C++标准库的一部分,但可能未来被C++标准库收录。

其他类型的容器:

容器

数据描述

bitset 存储系列位类似的固定大小的布尔矢量。实现按位运算,缺乏迭代器,不是串行。
valarray 不懂。

2.迭代器(iterator)

迭代器是泛化的指针,通过使用迭代器,开发者可以操作数据结构而无需关心其内部实现。

根据迭代器操作方式的不同,迭代器分为五种:

  • input iterator
  • output iterator
  • forward iterator
  • bidirectional iterator
  • random access iterator

3.算法(function)

STL提供了一些常用的算法,如排序和搜索等。这些算法与数据结构的实现实现了分离,因此,同样对于自定义的数据结构也可以使用这些算法,只需让这些自定义的数据结构拥有算法所预期的迭代器。

4.函数对象(function)

函数对象即重载了操作符()的对象。类的实例都可称为函数对象。

5.适配器(adaptor)

适配器为一个模板类,用于提供接口映射。

 

参考:

1. 标准模板库,维基百科

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值