假期程序设计总结(3)

一、priority_queue

priority_queue是优先队列,当向队列中放入数据时,它会自动调整队列顺序,使得它的队首元素一定是队列中优先级最高的。

1.定义

加入头文件#include<queue>,定义时与其他STL相同 priority_queue<数据类型>队列名。

2.访问

不同于queue,priority_queue之中没有front()和back()函数,访问时只能通过top()函数访问队列的队首元素,即优先级最高的元素。

3.常用函数

(1)push()

a.push(x)是让x进入到队列a中,时间复杂度为O(logN),N为当前队列的元素个数。

(2)top()

获得对首元素,即a.top(),时间复杂度为O(1)。

(3)pop()

令队首元素出队,不同于top(),pop()可以使队首元素离开队列,时间复杂度为O(logN),N为当前队列的元素个数。

(4)empty()

检查队列是否为空,该函数只有两种返回值,分别是true和false,时间复杂度为O(1)。

(5)size()

返回队列中元素的个数,时间复杂度为O(1)。

4.优先级设置

一般情况下,在int,double类型的队列中,数字越大的优先级越高,char类型的队列中,字典序越大的优先级越高。但是有一种方法可以设置优先级,priority_queue<int,vector<int>,less<int> >a,其中所有int可以换成其他类型,而less<int>表示数字大的优先级大,设置数字小的优先级大用greater<int>。

二、stack

一种后进先出的容器。

1.定义

添加头文件#include<stack>,定义时用 stack<数据类型>队列名。

2.访问

只能通过top()函数访问。

#include <iostream>
#include <stack>
using namespace std;
int main()
{
    stack<int>a;
    a.push(4);
    a.push(3);
    a.push(2);
    cout<<a.top();
}

输出结果:2

3.常用函数

push(),pop(),top(),empty(),size(),且这五个函数的时间复杂度均为O(1)。

三、pair

可以看作是一个内部仅含有两种元素的结构体。

1.定义

添加头文件#include<utility>或者#include<map>,定义时用pair<int,char>a。如果想要直接初始化,可以选择pair<int,char>a(3,"hhh"),或a=pair<int,char>(3,"hhh"),或者使用函数 a=make_pair(3,"hhh")。

2.访问

pair中只有两种元素,因此直接用a.first和a.second可以直接代表这两种元素,直接访问就可以。

3.常用函数

两个pair可以直接比较,一般指比较first,如果first一样就比较second。

4.常见用途

可以直接代替只有两种类型的结构体,或作为map的键值对来插入。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值