STL理解

STL初步
解释

STL = Standard Template Library,标准模板库惠普实验室开发的一系列软件的统称。它是由Alexander Stepanov、Meng Lee和David R Musser在惠普实验室工作时所开发出来的。这可能是一个历史上最令人兴奋的工具的最无聊的术语。从根本上说,STL是一些“容器”的集合,这些“容器”有list,vector,set,map等,STL也是算法和其他一些组件的集合。这里的“容器”和算法的集合指的是世界上很多聪明人很多年的杰作。STL的目的是标准化组件,这样就不用重新开发,可以使用现成的组件。STL现在是C++的一部分,因此不用额外安装什麽。它被内建在你的编译器之内。
  在C++标准中,STL被组织为下面的13个头文件:、、、、、、、、、、、和。
在这里插入图片描述

一言以蔽之:大神们给你造了各种好用工具而不用你自己一个螺丝一个螺母的从头做起。

链接 :https://www.runoob.com/cplusplus/cpp-stl-tutorial.html
排序与检索

sort(a, a+n); //排序 。

lower_bound的作用是查找“大于或者等于x的第一个 位置”。检索。

相当于 排序工具 , 检索工具。直接传参。

不定长数组:vector

vector就是一个不定长数组。不仅如此,它把一些常用操作“封装”在了vector类型内部。

与arr[10]不同,不用事先约定其长度。而且有很多操作如:用arr.size( )读取它的大小,arr.resize( )改变大小,arr.push_back( )向 尾部添加元素,arr.pop_back( )删除最后一个元素。"."相当于调用其功能

集合:set

set就是数学上的集合——每个元素最多只出现一次。:因为其无序,无”编号“所以不可重复!

迭代器:迭代器是一种检查容器内元素并遍历元素的数据类型。C++更趋向于使用迭代器而不是下标操作,因为标准库为每一种标准容器(如vector)定义了一种迭代器类型,而只用少数容器(如vector)支持下标操作访问容器元素。

映射:map

map就是从键(key)到值(value)的映射。

在C++中:因为重载了[ ]运算符,map像是数组的“高 级版”。例如可以用一个map,int>month_name来表示“月份名字到月份编号”的映射,然后用month_name[“July”]=7这样的方式来赋值。

简言之:map<string,string> people 赋值 people[“李zz”]=小菜鸟

​ map<string,int> age 赋值 age[“李zz”]=20

栈、队列与优先队列

​ 栈,就是符合“后进先 出”(Last In First Out,LIFO)规则的数据结构,有PUSH和POP两种操作,其中PUSH把元素 压入“栈顶”,而POP从栈顶把元素“弹出”,如图所示。

在这里插入图片描述

​ 每次新来一个人时,如果他有队友在排队,那么这个

新人会插队到最后一个队友的身后。如果没有任何一个队友排队,则他会排到长队的队尾

在这里插入图片描述

优先队列

优先队列是一种抽象数据类型(Abstract Data Type,ADT),行为有些像队列,但先出

队列的元素不是先进队列的元素,而是队列中优先级最高的元素,这样就可以允许类似

于“急诊病人插队”这样的事情发生。

如果他有队友在排队,那么这个

新人会插队到最后一个队友的身后。如果没有任何一个队友排队,则他会排到长队的队尾

优先队列

优先队列是一种抽象数据类型(Abstract Data Type,ADT),行为有些像队列,但先出

队列的元素不是先进队列的元素,而是队列中优先级最高的元素,这样就可以允许类似

于“急诊病人插队”这样的事情发生。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值