STL中的特殊容器Queue、Priority Queue
与前面的Stack一样,Queue、Priority Queue也是以容器适配器的形式实现的。Queue的特点是数据结构中的队列中的特点FIFO。主要操作
就是在队首和队尾。Priority Queue与Queue基本上是一样的,只不过在Queue上加了一个规则,第一个元素是优先级最高的元素,而不一定
是最先插入的,从这个特性看起始与堆比较像。容器的成员函数与代码示例如下:
Queue
成员函数 | 说明 |
---|---|
empty( ) | 判断容器是否为空 |
size( ) | 返回容器里的元素个数 |
push(val) | 插入一个新元素到容器的尾部 |
front( ) | 返回队头的元素 |
back( ) | 返回队尾的元素 |
pop( ) | 移除队头的元素 |
emplace(val) | 插入元素到队尾,元素在作为参数的时候构造 |
swap(que) | 与que队列中的元素进行交换 |
Priority Queue
成员函数 | 说明 |
---|---|
empty( ) | 判断容器是否为空 |
size( ) | 返回容器里的元素个数 |
push(val) | 插入一个新元素到容器的尾部,然后自动排序放在合适位置 |
top( ) | 返回队头元素的const引用 |
back( ) | 返回队尾的元素 |
pop( ) | 移除队头的元素,并重新依据优先级排序 |
emplace(val) | 插入元素到队尾,元素在作为参数的时候构造,然后自动排序放在合适位置 |
swap(pro_que) | 与pro_que队列中的元素进行交换 |
代码示例:
#include <iostream>
#include <queue>
using namespace std;
int main ()
{
queue<int> myqueue;
int myint;
cout << "Please enter some integers (enter 0 to end):\n";
do {
cin >> myint;
myqueue.push (myint);
} while (myint);
cout << "myqueue contains: ";
while (!myqueue.empty())
{
cout << ' ' << myqueue.front();
myqueue.pop();
}
cout << '\n';
return 0;
}
#include <iostream>
#include <queue>
using namespace std;
int main ()
{
priority_queue<int> mypq;
mypq.push(30);
mypq.push(100);
mypq.push(25);
mypq.push(40);
cout << "Popping out elements...";
while (!mypq.empty())
{
cout << ' ' << mypq.top();
mypq.pop();
}
cout << '\n';
return 0;
}