C++ STL中queue的成员函数
与 std::stack 一样, std::queue 的实现也是基于 STL 容器 vector、 list 或 deque 的。 queue 提供了几个
成员函数来实现队列的行为特征。表 24.2 通过程序清单 24.3 所示的整型 queue numsInQ 解释了 queue
的成员函数。
函数 描述
push() 在队尾(即最后一个位置)插入一个元素 numsInQ.push (25);
pop() 将队首(即最开始位置)的元素删除 numsInQ.pop ( );
front() 返回指向队首元素的引用 cout << "Element at front: " << numsInQ.front ( );
back() 返回指向队尾元素(即最后插入的元素)的引用 cout << "Element at back: " << numsInQ. back ( );
empty() 检查队列是否为空并返回一个布尔值 if (numsInQ.empty ( )) cout << “The queue is empty!”;
size() 返回队列中的元素数 size_t nNumElements = numsInQ.size ( );
STL queue 没有提供 begin( )和 end( )等函数,而大多数 STL 容器都提供了这些函数,包括 queue
类在底层使用的 deque、 vector 或 list。这是有意为之的,旨在只允许对 queue 执行符合队列行为特征 的操作。
对于 queue,元素在末尾插入,这是使用成员方法 push( )完成的:
numsInQ.push (5); // elements pushed are inserted at the end
删除是在开头进行的,这是使用成员方法 pop( )完成的:
numsInQ.pop (); // removes element at front
与 stack 不同, queue 允许查看其两端的元素,即容器的开头和末尾:
cout << "Element at front: " << numsInQ.front() << endl;
cout << "Element at back: " << numsInQ.back () << endl;
程序清单 24.4 演示了如何插入、删除和查看元素。
0: #include <queue>
1: #include <iostream>
2:
3: int main ()
4: {
5: using namespace std;
6: queue <int> numsInQ;
7:
8: cout << "Inserting {10, 5, -1, 20} into queue" << endl;
9: numsInQ.push (10);
10: numsInQ.push (5); // elements are inserted at the end
11: numsInQ.push (-1);
12: numsInQ.push (20);
13:
14: cout << "Queue contains " << numsInQ.size () << " elements" << endl;
15: cout << "Element at front: " << numsInQ.front() << endl;
16: cout << "Element at back: " << numsInQ.back () << endl;
17:
18: while (numsInQ.size () != 0)
19: {
20: cout << "Deleting element: " << numsInQ.front () << endl;
21: numsInQ.pop (); // removes element at front
22: }
23:
24: if (numsInQ.empty ())
25: cout << "The queue is now empty!" << endl;
26:
27: return 0;
28: }
输出:
Inserting {10, 5, -1, 20} into queue
Queue contains 4 elements
Element at front: 10
Element at back: 20
Deleting element: 10
Deleting element: 5
Deleting element: -1
Deleting element: 20
The queue is now empty!