1. Basic concepts
The queue container is the queue learned in our data structure.
The characteristic is: First In First Out (First In First Out, FIFO), it has two outlets.
The queue container allows adding elements from one end and removing elements from the other end.
Only the head and tail of the queue can be used by the outside world, so the queue does not allow traversal behavior.
Incoming data in the queue is called- enqueue push
Data out of the queue is called- Dequeue pop
2. Commonly used interfaces
Function description: Commonly used external interface of stack container
Constructor:
queue<T> que;
//queue is implemented using template classes, the default structure of the queue objectqueue(const queue &que);
//Copy constructor
Assignment operation:
queue& operator=(const queue &que);
//Overload the equal sign operator
Data access:
push(elem);
//Add elements to the end of the teampop();
//Remove the first element from the head of the teamback();
//Return to the last elementfront();
//Return the first element
Size operation:
empty();
//Determine whether the stack is emptysize();
//Return the size of the stack
Example:
#include <queue>
#include <string>
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("唐僧", 30);
Person p2("孙悟空", 1000);
Person p3("猪八戒", 900);
Person p4("沙僧", 800);
//向队列中添加元素 入队操作
q.push(p1);
q.push(p2);
q.push(p3);
q.push(p4);
//队列不提供迭代器,更不支持随机访问
while (!q.empty()) {
//输出队头元素
cout << "队头元素-- 姓名: " << q.front().m_Name
<< " 年龄: "<< q.front().m_Age << endl;
cout << "队尾元素-- 姓名: " << q.back().m_Name
<< " 年龄: " << q.back().m_Age << endl;
cout << endl;
//弹出队头元素
q.pop();
}
cout << "队列大小为:" << q.size() << endl;
}
int main() {
test01();
system("pause");
return 0;
}
to sum up:
- Join the team — push
- Out of the team — pop
- Back to the head element — front
- Back to the tail element — back
- Determine whether the team is empty — empty
- Return queue size — size