1、queue 基本概念
概念:Queue是一种先进先出(First In First Out,FIFO)的数据结构,它有两个出口
队列容器允许从一端新增元素,从另一端移除元素
队列中只有队头和队尾才可以被外界使用,因此队列不允许有遍历行为
队列中进数据称为 --- 入队 push
队列中出数据称为 --- 出队 pop
2、queue常用接口
构造函数:
1. queue<T> que; //queue采用模板类实现,queue对象的默认构造形式 2. queue(const queue &que); //拷贝构造函数
赋值操作:
queue& operator=(const queue &que); //重载等号操作符
数据存取:
1. push(elem); //往队尾添加元素 2. pop(); //从队头移除第一个元素 3. back(); //返回最后一个元素 4. front(); //返回第一个元素
大小操作:
1. empty(); //判断堆栈是否为空 2. size(); //返回栈的大小
1. #include <queue> 2. #include <string> 3. class Person 4. { 5. public: 6. Person(string name, int age) 7. { 8. this->m_Name = name; 9. this->m_Age = age; 10. } 11. 12. string m_Name; 13. int m_Age; 14. }; 15. 16. void test01() { 17. 18. //创建队列 19. queue<Person> q; 20. 21. //准备数据 22. Person p1("唐僧", 30); 23. Person p2("孙悟空", 1000); 24. Person p3("猪八戒", 900); 25. Person p4("沙僧", 800); 26. 27. //向队列中添加元素 入队操作 28. q.push(p1); 29. q.push(p2); 30. q.push(p3); 31. q.push(p4); 32. 33. //队列不提供迭代器,更不支持随机访问 34. while (!q.empty()) { 35. //输出队头元素 36. cout << "队头元素-- 姓名: " << q.front().m_Name 37. << " 年龄: "<< q.front().m_Age << endl; 38. 39. cout << "队尾元素-- 姓名: " << q.back().m_Name 40. << " 年龄: " << q.back().m_Age << endl; 41. 42. cout << endl; 43. //弹出队头元素 44. q.pop(); 45. } 46. 47. cout << "队列大小为:" << q.size() << endl; 48. } 49. 50. int main() 51. { 52. test01(); 53. return 0; 54. }
总结:
入队 --- push
出队 --- pop
返回队头元素 --- front
返回队尾元素 --- back
判断队是否为空 --- empty
返回队列大小 --- size