C++ STL 栈和队列详解

一.解释:

1.栈

栈是一种特殊的线性表。其特殊性在于限定插入和删除数据元素的操作只能在线性表的一端进行。如下所示:

  结论:后进先出(Last In First Out),简称为LIFO线性表。

  举个例子:你在洗碗把洗好的碗编号为依次摞起来,号在最下面,向上编号依次增加,然后再从上到下把碗放好,这样的话,先被洗的碗,就后被放好。

2.队列

队列(Queue)也是一种运算受限的线性表,它的运算限制与栈不同,是两头都有限制,插入只能在表的一端进行(只进不出),而删除只能在表的另一端进行(只出不进),允许删除的一端称为队尾(rear),允许插入的一端称为队头 (Front),如图所示:

结论:队列的操作原则是先进先出的,所以队列又称作FIFO表(First In First Out)

举个例子:超市付账的时候排队,先来的先排在最前面,后来的后排在队伍最后面,付账时排在队伍前面的先付账,排在后面的后付账。

二.用法

1.头文件

#include<queue>// 队列 
#include<stack>//

2.定义方式

stack<int>  s;//参数也是数据类型,这是栈的定义方式
queue<int>  q; //参数是数据类型,这是队列的定义方式

3.常用操作

栈:
s.empty()//如果栈为空返回true,否则返回false  
s.size()//返回栈中元素的个数  
s.pop()//删除栈顶元素但不返回其值  
s.top()//返回栈顶的元素,但不删除该元素  
s.push(X)//在栈顶压入新元素 ,参数X为要压入的元素
队列:
q.empty()// 如果队列为空返回true,否则返回false  
q.size() // 返回队列中元素的个数  
q.pop()  //删除队列首元素但不返回其值  
q.front()  // 返回队首元素的值,但不删除该元素  
q.push(X) //在队尾压入新元素 ,X为要压入的元素
q.back() //返回队列尾元素的值,但不删除该元素  

三、例子

#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstring>
#include <queue>
#include <stack>
#include <vector>
using namespace std;
int main()
{
    queue<int> q;
    stack<char> s;
    q.push(1);
    cout << q.enpty() << endl;
    q.push(2);
    cout << q.front() << endl;
    q.pop();
    cout << q.front() << endl;
    q.pop();
    cout << q.empty() <<endl;
    s.push(a);
    cout << s.top() <<endl;
    s.push(b);
    cout << s.top();
    s,pop();
    cout << s.top();
}
  • Metasploit详解

    0x00.Metasploit体系框架 0x01.文件目录解析 核心文件包括data,modules,scripts,tools,plugins 1.data 该文件里常用的的功能在wordlists(字典)里面 2.modules 该文件夹里包括了msf最核心的几个文件: auxiliary(漏洞辅助模块一般是没有攻击载荷的漏洞攻击) Exploits(渗透攻击模块) Post(开发模块)...

    Metasploit详解
  • 如何释放存在EXE上的资源文件

    1.添加资源到项目中直接参考图片就行 2.生成EXE文件 3.下载ResourceHacker程序 4.把程序导入ResourceHacker中 5.使用FindResource函数提取PE资源类型为”SETIMG” LPCWSTR b = _T(“SETIMG”);HMODULE hLocalHostModule = GetModuleHandleA(NULL);HRSRC hRsrc =...

    如何释放存在EXE上的资源文件
  • 使用爬虫爆破海康监控

    起因 海康的监控死活不搞验证码,我就想着一个没验证码不是分分钟爆破进后台吗,而且海康的百分之99的监控默认登录用户名都是admin这让爆破变的更加简单了。当我实际上手的时候用BurpUnlimited测试的时候发现登录爆破实际要发送2次包而且2次包都是加密的(因为写这篇文章的时候没有具体的环境所以发包的图我就没截了,有环境的自行测试下吧),这就让发包爆破这个思路断了(可能是因为我菜)隔了一天...

    使用爬虫爆破海康监控
  • Windows API函数

    1. API之网络函数 WNetAddConnection 创建同一个网络资源的永久性连接WNetAddConnection2 创建同一个网络资源的连接WNetAddConnection3 创建同一个网络资源的连接WNetCancelConnection 结束一个网络连接WNetCancelConnection2 结束一个网络连接WNetCloseEnum 结束一次枚举操作WNetConne...

    Windows API函数