赞
踩
队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。
队尾(rear):只能从队尾添加元素,一般焦作enQueue,入队
队头(front):只能从队头移除元素,一般焦作deQueue,出队
先进先出的原则、First In Fist Out,FIFO(跟栈是反的,栈是后进先出)
在生活中队列案例也是随处可见。例如火车站排队买票,银行排队办理业务。
队列只需要从对尾插入数据(入队,push_back),对头取数据(出队,pop_front);
队列只能访问对头和队尾数据,其他数据需要出队才能访问,所以不存在遍历队列;
返回队列头数据:front()
返回队列尾数据:back()
- 默认构造
queue que- 拷贝构造函数
queue(const queue &que)
- 入队
push()
emplace()- 出队
pop()
- 获取队列头数据
front()- 获取队列尾数据
back()- 判断队列是否为空
empty();- 获取队列中元素个数
size();- 互换元素:
swap();
’注意:queue容器不支持随机访问,不能通过下标访问元素;不支持迭代器访问元素,仅能通过front和back来访问一个元素和最后一个元素;
#include <iostream> #include <queue> using namespace std; void test() { queue<int> q; //入队 q.push(10); q.push(20); q.push(30); q.emplace(40);//从队列尾插入数据 cout << "队列中成员个数:" << q.size() << endl; while (!q.empty())//判断队列是否为空 { cout << "队列头:" << q.front() << "\t队列尾:" << q.back() << endl; q.pop();//出队 } cout << "队列中成员个数:" << q.size() << endl; } int main() { test(); system("pause"); }
#include <iostream> #include <queue> #include <stdlib.h> using namespace std; class Person { public: int age; string name; //构造函数 Person(int age,string name):age(age),name(name){ } }; //重载<< ostream& operator<<(ostream&,Person p) { cout<<"姓名:"<<p.age<<"\t"<<"年龄"<<p.name; return cout; } void test() { queue<Person> q1; queue<Person> q2; //入队操作 q1.emplace(12,"小王"); //q1.push(13,"小刘");//错误,push需要实例化对象 q1.push(Person(13,"小刘")); Person p(25,"阿水"); q1.emplace(p);//emplace既可以直接填构造函数形参,也可以实例化对象填入 //q2入队操作 q2.push(p); q2.emplace(25,"安安"); cout<<"队列q1成员个数:"<<q1.size()<<endl; cout<<"队列q2成员个数:"<<q2.size()<<endl; //交换 cout<<"交换成员后:"<<endl; q1.swap(q2); cout<<"队列q1成员个数:"<<q1.size()<<endl; cout<<"队列q2成员个数:"<<q2.size()<<endl; //q1出队 cout<<"q1出队:"<<endl; while(!q1.empty()) { cout<<"q1队列头内容:"<<q1.front()<<endl; cout<<"q1队列尾内容:"<<q1.back()<<endl; cout<<endl; q1.pop();//出队 } //q2出队 cout<<"q2出队:"<<endl; while(!q2.empty()) { cout<<"q2队列头内容:"<<q2.front()<<endl; cout<<"q2队列尾内容:"<<q2.back()<<endl; cout<<endl; q2.pop();//出队 } } int main() { test(); system("pause"); }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。