3.6.1 queue基本概念
Queue是一种先进先出(First In First Out, FIFO)的数据结构,它有两个出口
队列容器允许从一段新增元素,从另一端移除元素
队列中只有队头和队尾才可以被外界使用,因此队列不允许有遍历行为
队列中进数据称为—入队(push)
队列中出数据称为—出队(pop)
3.6.2 queue常用接口
构造函数:
- queue que; //queue采用模板类实现,queue对象的默认构造形式
- queue(const queue &que); //拷贝构造函数
赋值操作:
- queue& operator=(const queue &que); //重载等号操作符
数据存取:
- push(elem);
- pop();
- back(); //返回最后一个元素
- front(); //返回第一个元素
大小操作:
- empty(); //判断对战是否为空
- size(); //返回栈的大小
class Person
{
public:
string m_Name;
int m_Age;
Person(string name, int age)
{
this->m_Name = name;
this->m_Age = age;
}
};
void test01()
{
queue<Person> q;
Person p1("唐僧", 30);
Person p2("孙悟空", 2000);
Person p3("猪八戒", 1000);
Person p4("沙和尚", 900);
//入队
q.push(p1);
q.push(p2);
q.push(p3);
q.push(p4);
cout << "队列的大小为: " << q.size() << endl;
//只要队列不为空,查看队头和队尾,并且执行出队操作
while(!q.empty())
{
cout << "队头元素姓名为: " << q.front().m_Name;
cout << "\t队头元素年龄为: " << q.front().m_Age << endl;
cout << "队尾元素姓名为: " << q.back().m_Name;
cout << "\t队尾元素年龄为: " << q.back().m_Age << endl;
cout << endl;
//出队
q.pop();
}
cout << "队列的大小为: " << q.size() << endl;
/*
队列的大小为: 4
队头元素姓名为: 唐僧 队头元素年龄为: 30
队尾元素姓名为: 沙和尚 队尾元素年龄为: 900
队头元素姓名为: 孙悟空 队头元素年龄为: 2000
队尾元素姓名为: 沙和尚 队尾元素年龄为: 900
队头元素姓名为: 猪八戒 队头元素年龄为: 1000
队尾元素姓名为: 沙和尚 队尾元素年龄为: 900
队头元素姓名为: 沙和尚 队头元素年龄为: 900
队尾元素姓名为: 沙和尚 队尾元素年龄为: 900
队列的大小为: 0
*/
}