• queue容器(c++)


    一.queue模版类的定义在<queue>头文件中。

    queue与stack模版非常类似,queue模版也需要定义两个模版参数,一个是元素类型,一个是容器类型,元素类型是必要的,容器类型是可选的,默认为dqueue类型。

    定义queue对象的示例代码如下:

    queue<int>q1;

    queue<double>q2;

    queue的基本操作有:

    1.入队:如q.push(x):将x元素接到队列的末端;

    2.出队:如q.pop() 弹出队列的第一个元素,并不会返回元素的值;

    3,访问队首元素:如q.front()

    4,访问队尾元素,如q.back();

    5,访问队中的元素个数,如q.size();

    二.优先队列

    在<queue>头文件中,还定义了一个非常有用的模版类priority_queue(优先队列),优先队列与队列的差别在于优先队列不是按照入队的顺序出队,而是按照队列中元素的优先权顺序出队(默认为大者优先,也可以通过指定算子来指定自己的优先顺序)。

    priority_queue模版类有三个模版参数,元素类型,容器类型,比较算子。其中后两个都可以省略,默认容器为vector,默认算子为less,即小的往前排,大的往后排(出队时序列尾的元素出队)。

    定义priority_queue对象的示例代码如下:

    priority_queue<int >q1;

    priority_queue<pair<int,int> >q2;

    priority_queue<int,vector<int>,greater<int> >q3;//定义小的先出队

    priority_queue的基本操作均与queue相同

    /*(修理牧场)输入一组数据得到最小权和*/
    #include<iostream>
    #include <cstdio>
    #include <queue>    //队列模板
    
    using namespace std;
    
    //priority_queue<int>q;  优先队列  默认大的先出队
    priority_queue<int, vector<int>, greater<int> > q;  //优先队列  定义小的先出队
    
    int main() {
        int n, m;
        cout<<"输入数组长度n:";
        cin>>n;
        cout<<"输入数据元素:";
        for( int i = 0; i < n; i++ ) {
            cin>>m;
            q.push( m );
        }
    
        int sum = 0;
    
        while( q.size() > 1 ) {
            int first = q.top();
            q.pop();
    
            int second = q.top();
            q.pop();
    
            sum += first + second;      
            q.push( first + second );  
        }
    
        cout<<"最小花费:"<<sum<<endl;
    
        return 0;
    }
  • 相关阅读:
    UVA11300分金币
    hdu3987 最小割边数
    直线上的整点个数
    BZOJ 2818 Gcd
    服务器数据恢复成功案例+服务器数据恢复通用原理
    【转】Linux AIO机制
    如何更好地与人沟通?看完这本书,你也能成为沟通高手!
    “自我管理”是成功人士必备的能力,提高自我管理能力推荐你看这些书!
    能帮你提高沟通能力的十沟通类书籍推荐
    团队管理者必看的书籍推荐,团队管理的良方都在这本书里
  • 原文地址:https://www.cnblogs.com/didiaoxiaoguai/p/8007612.html
Copyright © 2020-2023  润新知