STL学习记录(十六):Queue、Priority Queue

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;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

你可能感兴趣的:(Queue,STL)