1. stack容器
1.1 简介
① stack是一种后进先出的容器,它只有一个出口。
② 栈中只有顶端的元素才可以被外界使用,因此栈不允许有遍历行为。
③ 栈中进入数据称为:入栈 push
④ 栈中弹出数据称为:出栈 pop
1.2 stack常用接口
① 功能描述:栈容器常用的对外接口。
② 构造函数:
1. stack<T> st; //stack采用模板类实现,stack对象的默认构造形式
2. stack(const stack &stk); //拷贝构造函数
③ 赋值操作:
3. stack& operator=(const stack &stk); //重载等号操作符
④ 数据存取:
4. push(elem); //向栈顶添加元素
5. pop(); //从栈顶移除第一个元素
6. top(); //返回栈顶元素
⑤ 大小操作:
7. empty(); //判断堆栈是否为空
8. size(); //返回栈的大小
1.3 代码示例
#include<iostream>
#include <stack>
using namespace std;
//栈stack容器
void test01()
{
//特点:符合先进后出数据结构
stack<int> s;
//入栈
s.push(10);
s.push(20);
s.push(30);
s.push(40);
//只要栈不为空,查看栈顶,并且执行出栈操作
while (!s.empty())
{
cout << "栈的大小为:" << s.size() << “; ”;
//查看栈顶元素
cout << "栈顶元素为:" << s.top() << endl;
//出栈
s.pop();
}
}
int main() {
test01();
return 0;
}
运行结果为:
2. queue容器
2.1 简介
① queue是一种先进先出的数据结构,它有两个出口。
② 队列容器允许一段新增元素,从另一端移除元素。
③ 队列中只有对头和队尾才可以被外界使用,因此队列不允许有遍历行为。
④ 队列中进数据称为入队。
⑤ 队列中出数据称为出队。
2.2 常用接口
① 功能描述:栈容器常用的对外接口。
② 构造函数:
1. queue<T> que; //queue采用模板类实现,queue对象的默认构造形式
2. queue(const queue &que); //拷贝构造函数
③ 赋值操作:
3. queue& operator=(const queue &que); //重载等号操作符
④ 数据存储:
4. push(elem); //往队尾添加元素
5. pop(); //从对头移除第一个元素
6. back(); //返回最后一个元素
7. front(); //返回第一个元素
⑤ 大小操作:
8. empty(); //判断堆栈是否为空
9. size(); //返回栈的大小
2.3 代码示例
#include <iostream>
#include <queue>
#include <string>
using namespace std;
//队列 Queue
class Person
{
public:
Person(string name, int age)
{
this->m_Name = name;
this->m_Age = age;
}
string m_Name;
int m_Age;
};
void test01()
{
//创建队列
queue<Person>q;
//准备数据
Person p1("小明", 10);
Person p2("小红", 9);
Person p3("张三", 20);
Person p4("李四", 18);
//入队
q.push(p1);
q.push(p2);
q.push(p3);
q.push(p4);
cout << "队列大小为:" << q.size() << endl;
//判断只要队列不为空,查看对头,查看队尾,出对
while (!q.empty())
{
//查看对头
cout << "对头元素 -- 姓名:" << q.front().m_Name << " 年龄:" << q.front().m_Age << endl;
//查看队尾
cout << "队尾元素 -- 姓名:" << q.back().m_Name << " 年龄:" << q.back().m_Age << endl;
//出对
q.pop(); //出队是出对头元素
}
cout << "队列大小为:" << q.size() << endl;
}
int main()
{
test01();
return 0;
}
运行结果为: