目录
1,基本概念
queue是一种先进先出(first in first out, FIFO)的数据结构,它有两个出口;
队列容器允许从一端新增元素,从另一端移除元素;
队列中只有对头和队尾才可以被外界使用,因此队列不允许有遍历行为;
队列中进数据元素称为---入队 push;
队列中出数据称为---出队 pop;
生活中的队列:排队买票。
2,queue常用接口
功能:栈容器常用的对外接口;
构造函数:
queue<T> que; //queue采用模板类实现,queue对象的默认构造形式
queue(const queue<T> & que); //拷贝构造函数
赋值操作:
queue& operator=(const queue& que); //重载等号操作符
数据存取:
push(elem); //往队尾添加元素
pop(); //从队头移除第一个元素
back(); //返回最后一个元素
front(); //返回第一个元素
大小操作:
empty(); //判断队列是否为空
size(); //返回队列大小
#include <iostream>
using namespace std;
#include <string>
#include <queue>
void test01()
{
queue<int> que1;
que1.push(10);
que1.push(20);
que1.push(30);
que1.push(40);
cout << "第一个元素:" << que1.front() << endl;
cout << "最后一个元素:" << que1.back() << endl;
//移除对头第一个元素
que1.pop();
cout << "第一个元素:" << que1.front() << endl;
//拷贝构造
queue<int> que2(que1);
//cout << "第一个元素:" << que2.front() << endl;
//cout << "最后一个元素:" << que2.back() << endl;
//赋值
queue<int> que3 = que1;
//cout << "第一个元素:" << que2.front() << endl;
//cout << "最后一个元素:" << que2.back() << endl;
if (que1.empty())
{
cout << "队列为空" << endl;
}
else
{
cout << "队列不为空" << endl;
cout << "队列的大小:" << que1.size() << endl;
}
}
int main()
{
test01();
system("pause");
return 0;
}
3,队列中存储自定义数据类型
#include <iostream>
using namespace std;
#include <string>
#include <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> que;
Person p1("刘备", 30);
Person p2("关羽", 25);
Person p3("张飞", 20);
Person p4("赵云", 40);
que.push(p1);
que.push(p2);
que.push(p3);
que.push(p4);
while (!que.empty())
{
cout << "队头元素的名称:" << que.front().m_Name << " 队头元素的年龄:" << que.front().m_Age << endl;
cout << "队尾元素的名称:" << que.back().m_Name << " 队尾元素的年龄:" << que.back().m_Age << endl;
que.pop();
}
cout << "列表的大小:" << que.size() << endl;
}
int main()
{
test01();
system("pause");
return 0;
}