STL学习(三)deque——statck——queue——list——priority_queue

10 篇文章 0 订阅

一. deque

(一)deque与vector区别

1. deque是双端数组或者双端队列,而vetor是单端的
2. deque头部和尾部添加元素都比较快,而尾部添加快,头部很慢,因此vector只有push_back()和pop_back()函数,而deque多了push_front()和pop_front()函数
3. deque是段连式空间插入和删除比vector快比list慢,deque插入和删除只用移动每一段空间,空间不够用时deque不删除之前元素而是申请一段空间存放那些元素
4.deque没有capacity函数和reserva函数
5.deque随机访问比vector慢,因为要处理每一段。排序函数执行一般先放入vector在排
6.deque介于vector和list之间,deque相当于一小段vector放入list中

二.stack

简介

1. stack是堆栈容器,先进后出,有push()压栈,pop()出栈,top()栈顶元素
2. 栈不支持遍历和随机存取,不提供迭代器,只能访问栈顶

三.queue

简介

1. queue是队列,先进先出。
2. 只能队尾添加push(),队头删除pop()
3. 可以返回队首元素front()和队尾元素back()
4. 不能随机访问,不提供迭代器

四.List

(一)简介
  1. list是双向链表,可有效的插入和删除数据,不支持随机访问
  2. 提供迭代器,但ite++可以,ite+elem不行
  3. 没有capacity()函数,无需预留空间,边插边加。
(二)删除元素

1. clear():删除所有
2. erase() : 删除区间或者pos位置元素
2. remove(elem):删除elem元素
3. unique():删除相同元素

(三)其他函数

1. reverse() //把list元素反转,注意区分vector中的reserve()函数
2. sort() // list有成员函数sort(),用sort()最好用成员函数而不用算法
3. merge() //合并,要求两链表有序
4. splice() // 拼接(和insert类似)

五.priority_queue

(一)介绍

具有优先级的队列
头文件:#include
从大到小排序声明:priority_queue que;
从小到大排序声明:priority_queue<int, vector, greater > que;

#include<iostream>
#include<queue>
using namespace std;

int main()
{


	//最大值优先(默认)
	priority_queue<int>pq2;
	pq2.push(0);
	pq2.push(11);
	pq2.push(3);
	pq2.push(6);

	while (!pq2.empty())
	{
		cout << pq2.top() << endl;
		pq2.pop();

	}

	cout << endl;

	//最小值优先
	priority_queue<int,vector<int>,greater<int>> pq1;
	pq1.push(0);
	pq1.push(11);
	pq1.push(3);
	pq1.push(6);
	
	while (!pq1.empty())
	{
		cout << pq1.top() << endl;
		pq1.pop();

	}
	system("pause");
	return 0;
}

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值