STL之stack(堆栈)和 queue(队列)以及Dequeue(双端队列)

须知:在尖括号中定义你容器里的元素类型 stack<int> name

理解stack:我们可以把罐子零食看做stack,在制作的时候往里面放入零食,最先放入的都是在最底下的,快封装前也就是最后放的零食是在罐子最顶上的;

我们取出零食时也是拿的最顶上的零食,所以stack是先进后出。

1.stack创建时不同于vector和list,不可以在赋值的时候赋初始值。

2.由于stack特性先进后出,在访问元素时我们只能访问首元素,通过.top()实现,同时也可以直接通过.tap() = xxx来修改首元素的值

3.取零食我们取最上面,所以我们删除元素也只有一个位置删也就是头删,通过.pop()删除头元素。

4.获取容器的大小通过 .size(),返回容器的大小(该文章内通用)

理解queue:我们可以把平时排队的看做queue,第一个排的,第一个拿到东西,也就是先进先出,

定义方式:queue<int> cars,同栈,队列在声明时是不可以赋值的。

1.添加元素:我们进行排队只能排在别人后面(这里可不存在插入的行为o),所以只能尾插

用.push()                  eg:cars.push("volvo")

2.删除元素:相当于第一个人排到了,拿了东西就要走,所以只能头删,用.pop()

eg: cars.pop()

3.访问方式:无法像数组跟向量一样通过索引(下标)进行访问,整你访问最前面跟最后面元素

前面.front()          后面.back(),通过该方式还可以修改前后元素

这里提及一个特殊队列,双端队列(deque),它比队列更灵活,可以从队列两端进行添加和删除元素

创建方式同上,可在声明时添加元素,deque可以通过索引来访问队内元素,从0开始,0也是最前面的元素, eg:deque<int> haha = {1,2,3,4}     此时haha[0] == haha.front() == haha.at(0) ;

添加元素:可头插.push_front(),尾插.push_back()

删除元素:可头删.pop_front(),尾删.pop_back()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

后天苦海谈话

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值