C++ 学习笔记之——STL 库 queue

发布时间:2019-08-06 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了C++ 学习笔记之——STL 库 queue脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

1. 队列

queue 队列是一种容器适配器,专门用来满足先进先出的操作,也就是元素在容器的一端插入并从另一端提取。

  • bool empty() const; 返回队列是否为空;
  • size_tyPE size() const; 返回队列中元素的数量;
  • reference& back(); 返回队列中最后一个元素也即最新的元素的引用;
  • reference& front(); 返回队列中的下一个元素也即最旧的元素的引用;
  • void push (const value_type& val); 在队尾插入一个元素;
  • void pop(); 弹出队列的下一个元素也即最旧的元素,队头元素。

2. 优先级队列

优先级队列是一种容器适配器,根据一些严格的弱排序标准,专门设计使其第一个元素始终是它包含的最值元素。其本质上就是一个大顶堆或者小顶堆,会在需要时自动调用函数 make_heap,push_heap 和 pop_heap 自动完成堆化,比如插入新元素或者弹出堆顶元素。

  • bool empty() const; 返回优先级队列是否为空;
  • size_type size() const; 返回优先级队列中元素的数量;
  • const_reference top() const; 返回优先级队列的顶部元素,也即比较优先级最高的元素;
  • void push (const value_type& val); 在优先级队列中插入一个元素;
  • void pop(); 弹出优先级队列的顶部元素。

下面的例子中展示了构建优先级队列,将两个降序的 vector 合并成一个新的降序的 vector。

#include <iostream>
#include <vector>
#include <queue>

using namespace std;

class mycomparison
{
    bool big_heap; // 大顶堆标志位,也就是所有元素比堆顶元素小
public:
    mycomparison(const bool& param=@H_489_126@true)
    {big_heap = param;}
    bool operator() (const vector<int> vec1, const vector<int> vec2) const
    {
        if (big_heap) return (vec1[0] < vec2[0]);
        else return (vec1[0] > vec2[0]);
    }
};

int main ()
{
    vector<int> vec1;
    vec1.push_back(200);
    vec1.push_back(50);
    vec1.push_back(32);

    vector<int> vec2;
    vec2.push_back(100);
    vec2.push_back(96);
    vec2.push_back(20);

    vector<int> vec3;

    // priority_queue<vector<int>, vector< vector<int>>, mycomparison> q(mycomparison(false));
   // priority_queue<vector<int>, vector< vector<int>>, mycomparison> q(false);
    priority_queue<vector<int>, vector< vector<int>>, mycomparison> q;

    q.push(vec1);
    q.push(vec2);

    while (!q.empty())
    {
        vector<int> temp = q.top();
        q.pop();
        vec3.push_back(temp[0]);
        temp.erase(temp.begin());
        if (temp.size() != 0) q.push(temp);
    }

    for (vector<int>::iterator it = vec3.begin(); it != vec3.end(); it++) cout << *it << ' ';

    return 0;
}

C++ 学习笔记之——STL 库 queue

[参考资料 [http://www.cplusplus.com]](http://www.cplusplus.com/refe...

获取更多精彩,请关注「seniusen」!

C++ 学习笔记之——STL 库 queue

脚本宝典总结

以上是脚本宝典为你收集整理的C++ 学习笔记之——STL 库 queue全部内容,希望文章能够帮你解决C++ 学习笔记之——STL 库 queue所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。