参考博文1:<C++> stack与queue容器概念模型|常用接口汇总
参考博文2: STL常用容器——queue容器的使用
??本文主要介绍C++ STL中的stack和queue两大容器的基本概念与方法调用,不涉及具体的底层实现,若要了解堆栈的底层设计与程序实现,请参考数据结构与算法专栏中的:
push
,栈中弹出数据称为 出栈 pop
#include <stack>
生活中的栈:
构造函数:
函数原型 | 功能 |
---|---|
stack<T> stk; | stack采用模板类实现, stack对象的默认构造形式 |
stack(const stack &stk); | 拷贝构造函数 |
赋值操作:
数据存取:
方法 | 功能 |
---|---|
push(elem); | 向栈顶一个元素 |
pop(); | 从栈顶移除第一个元素,返回值为void |
top( ); | 返回栈顶元素 |
大小操作:
方法 | 功能 |
---|---|
empty( ); | 判断堆栈是否为空 |
size( ); | 返回栈的大小 |
示例:
#include <stack>
void stack_test()
{
stack<int> s; //定义栈
//数据入栈
s.push(10);
s.push(20);
s.push(30);
s.push(40);
cout << "栈的起始大小为: " << s.size() << endl;
while(!s.empty())
{
//输出栈顶元素
cout << "栈顶元素为: " << s.top() << endl;
s.pop(); //出栈
}
cout << "栈的终止大小为: " << s.size() << endl;
}
总结:
#include <queue>
push
,移除称为 出队 pop
生活中的队列:
??queue
与 stack
常用接口几乎一致,唯一不同的就是队列的队首和队尾与堆栈的栈顶表示有所不同。
构造函数:
函数原型 | 功能 |
---|---|
queue<T> que; | queue采用模板类实现,queue对象的默认构造形式 |
queue(const queue &que); | 拷贝构造函数 |
赋值操作:
queue& operator=(const queue &que);
??// 已经重载等号操作符数据存取:
方法 | 功能 |
---|---|
push(elem); | 往队尾添加元素 |
pop(); | 从队头移除第一个元素,返回值为void |
back( ); | 返回最后一个元素 |
front( ); | 返回第一个元素 |
大小操作:
方法 | 功能 |
---|---|
empty(); | 判断队列是否为空 |
size( ); | 返回队列的大小 |
示例代码:
#include <queue>
class Person
{
public:
string name;
int age;
Person(string name,int age){
this->name = name;
this->age = age;
}
};
void queue_test()
{
queue<Person> sq;
//实例化对象并入队
Person p1("张三",18);
Person p2("李四",22);
Person p3("王五",20);
Person p4("陈六",21);
sq.push(p1);
sq.push(p2);
sq.push(p3);
sq.push(p4);
cout << "队列的起始大小为: " << sq.size() << endl;
while(!sq.empty())
{
//获取队头信息
cout << "name: " << sq.front().name;
cout << "\tage: " << sq.front().age << endl;
sq.pop(); //出队
}
cout << "队列的终止大小为: " << sq.size() << endl;
}
总结: