zoukankan      html  css  js  c++  java
  • 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;
    }
  • 相关阅读:
    IDEA 现有项目连接SVN
    图片预加载,懒加载
    element-ui table中排序 取消表格默认排序问题
    Linux vim编辑命令
    linux mount 硬盘挂载和卸载
    Linux mke2fs 硬盘格式化
    Linux rm 删除文件
    linux 创建和删除目录
    linux 配置IP
    kickstart自动化安装--tftp+nfs+dhcp
  • 原文地址:https://www.cnblogs.com/didiaoxiaoguai/p/8007612.html
Copyright © 2011-2022 走看看