STL学习总结【菜鸟版】

STL是标准模板库(Standard Template Library)的简称,它是一些常用数据结构和算法模板的集合。主要由Alex Stepanov开发,于1998年被添加到C++标准。
有了STL,你不必再从头写太多的数据结构和算法,可以通过调用STL中的现成的数据结构和算法,并且性能较高。

STL中的几个概念:
1、容器:可容纳各种数据类型的数据结构
2、迭代器:可依次存取容器中元素的东西。
3、算法:用来操作容器中的元素的函数模板。例如:STL用sort()来对一个vertor的数据进行排序,用find()来搜索一个list中的对象。
注:函数本身与他们操作的数据结构与类型无关,因此它们可以在从简单数组到高度复杂容器的任何数据结构上使用。

比如,数组int array[100]就是个容器,而int *类型的指针变量就可以作为迭代器,可以为这个容器编写一个排序算法。

一、容器概述
容器可以用于存放各种类型的数据(基本类型的变量、对象等)的数据结构。
容器分为三大类:
1)顺序容器
vector:后部插入/删除,直接访问
deque:前/后部插入/删除,直接访问
list:双向链表,任意位置插入/删除
2)关联容器
set:快速查找,无重复元素。默认按升序排序
multiset:快速查找,可有重复元素。其它性质和set类似
hash_set:与set相比较,它里面的元素不一定是经过排序的,而是按照所用的hash函数分派的,它能提供更快的搜索速度,速度更快
hash_multiset:键值可以不唯一。其他特点和hash_set相同
map:一对一映射。无重复映射,基于关键字查找
multimap:一对一映射。可有重复元素,基于关键字查找
hash_map:与map相比较,它里面的元素不一定是按键值排序的,而是按照所用的hash函数分派的,它能提供更快的搜索速度,其他和map性质相同
hash_multimap:键值可以不唯一,其他特点与hash_map相同

前2者称为第一类容器

3)容器适配器
stack:LIFO,后进先出
queue:FIFO,先进先出
priority_queue:优先级高的元素先出

顺序容器介绍:
1)vector头文件 #include
实际上就是个 动态数组。随机存取任何元素都能在常数时间完成,在尾端增衫元素具有较佳的性能。
2)deque头文件 #include
也是个动态数组,随机存取任何元素都能在常数时间完成,性能次于vector,在两端增删元素具有较佳的性能。
3)list头文件 #include
双向链表,在任何位置增删元素都能在常数时间内完成。不支持随机存取。
上述三种容器称为顺序容器,是因为元素的插入位置同元素的值无关。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值