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;
    }
  • 相关阅读:
    Spring阶段性学习:基础、配置解析、回调
    谈谈Spring对于@Configuration的Cglib代理
    IDEA使用Docker插件部署jar
    实用的IDEA插件
    Alibaba Cloud Toolkit插件部署jar
    谈谈Spring的ImportSelector和ImportBeanDefinitionRegistrar
    谈谈Spring的ConfigurationClassPostProcessor
    Mariadb使用总结
    分布式开放消息系统(RocketMQ)的原理与实践
    redis学习笔记
  • 原文地址:https://www.cnblogs.com/didiaoxiaoguai/p/8007612.html
Copyright © 2011-2022 走看看