栈
栈的基本概念
栈是动态集合,采用后进先出(last in,first out,LIFO)策略,只能在数列的末尾进行压入(PUSH)或弹出(POP)操作。
栈的C++标准库函数
在C++中使用标准库的栈时, 应包含相关头文件#include< stack >
定义:stack< int > sta主要功能如下:
sta.size(); //返回栈中元素的数量 sta.top(); //返回栈顶元素 sta.pop(); //弹出栈顶元素 sta.push(); //将元素压入栈顶 sta.swap(); //交换两个栈中的元素 sta.emplace(); //类似于push(),但是减少了内存开销,效率更高
C++应用案例
#include<iostream>
#include<stack>
using namespace std;
int main()
{
stack <int>sta;
stack <int>stb;
//入栈
for(int i=0;i<5;i++)
{
sta.push(i);
stb.push(i*i);
}
//交换两个栈中的元素
sta.swap(stb);
//在栈A和栈B中分别放入数据100、200
sta.emplace(100);
stb.emplace(200);
//输出栈的大小
cout<<"栈A的大小:"<<sta.size()<<endl;
cout<<"栈B的大小:"<<stb.size()<<endl;
//删除栈A中的最后一个元素
sta.pop();
//输出栈中的所有元素
cout<<"栈A:";
while(!sta.empty())
{
cout<<sta.top()<<" ";
sta.pop();
}
cout<<endl<<"栈B: ";
while(!stb.empty())
{
cout<<stb.top()<<" ";
stb.pop();
}
return 0;
}
输出:
栈A的大小:6
栈B的大小:6
栈A:16 9 4 1 0
栈B:200 4 3 2 1 0
队列
队列的基本概念
队列和栈一样也是动态集合,采用先进先出(first in,first out,FIFO)策略。
队列的C++标准库函数
在C++中使用标准库的栈时, 应包含相关头文件:#include< queue >
定义:queue< int > qe主要功能如下:
qe.size(); //返回栈中元素的个数 qe.back(); //返回队列最后一个元素 qe.front(); //返回队列第一个元素 qe.pop(); //删除第一个元素 qe.push(); //在末尾加一个元素 qe.emplace(); //类似于push(),但是减少了内存开销,效率更高 qe.swap(); //交换了两个队列的元素
C++应用案例
#include<iostream>
#include<queue>
using namespace std;
int main()
{
queue <int>qua;
queue <int>qub;
//入队列
for(int i=0;i<5;i++)
{
qua.push(i);
qub.push(i*i);
}
//交换两个队列中的元素
qua.swap(qub);
//在队列A和队列B末尾分别放入数据100、200
qua.emplace(100);
qub.emplace(200);
//输出队列的大小
cout<<"队列A的大小:"<<qua.size()<<endl;
cout<<"队列B的大小:"<<qub.size()<<endl;
//删除队列A中的第一个元素
qua.pop();
//输出队列中的所有元素
cout<<"队列A:";
while(!qua.empty())
{
cout<<qua.front()<<" ";
qua.pop();
}
cout<<endl<<"队列B: ";
while(!qub.empty())
{
cout<<qub.front()<<" ";
qub.pop();
}
return 0;
}
输出:
队列A的大小:6
队列B的大小:6
队列A:1 4 9 16 100
队列B:0 1 2 3 4 200