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;
}
时间: 2024-11-01 01:54:05

queue容器(c++)的相关文章

STL学习系列五:Queue容器

Queue简介 queue是队列容器,是一种“先进先出”的容器. queue是简单地装饰deque容器而成为另外的一种容器. #include <queue> 1.queue对象的默认构造 queue采用模板类实现,queue对象的默认构造形式:queue<T> queT; 如: queue<int> queInt; //一个存放int的queue容器. queue<float> queFloat; //一个存放float的queue容器. ... //尖括

STL之stack容器和queue容器

摘要:本文主要介绍了两种容器——stack容器和queue容器. 1.基本概念   stack容器 queue容器 容器介绍 stack是一种先进后出(First In Last Out,FILO)的数据结构,它只有一个出口, 形式如图所示.stack容器允许新增元素,移除元素,取得栈顶元素,但是除了 最顶端外,没有任何其他方法可以存取stack的其他元素.换言之,stack不允 许有遍历行为. 有元素推入栈的操作称为:push,将元素推出stack的操作称为pop. Queue是一种先进先出(

浅谈C++ STL queue 容器

浅谈C++ STL queue 容器 本篇随笔简单介绍一下\(C++STL\)中\(queue\)容器的使用方法和常见的使用技巧.\(queue\)容器是\(C++STL\)的一种比较基本的容器.我们在学习这个容器的时候,不仅要学到这个容器具体的使用方法,更要从中体会\(C++STL\)的概念. queue容器的概念 \(queue\)在英文中是队列的意思.队列是一种基本的数据结构.而\(C++STL\)中的队列就是把这种数据结构模板化了.我们可以在脑中想象买票时人们站的排队队列.我们发现,在一

(C/C++学习)27.STL之queue容器

说明:queue 是一种先进先出(First In First Out,FIFO)的数据结构,它有两个出口,queue容器允许从一端新增元素,从另一端移除元素. 注意:Queue 所有元素的进出都必须符合”先进先出”的条件,只有 queue 的顶端元素,才有机会被外界取用.Queue 不提供遍历功能,也不提供迭代器. 1.构造函数 1 queue<T> queT;//queue 对象的默认构造形式 2 queue(const queue &que);//拷贝构造函数 2.存取插入以及删

C++queue容器学习(详解)

一.queue模版类的定义在<queue>头文件中. queue与stack模版非常类似,queue模版也需要定义两个模版参数,一个是元素类型,一个是容器类型,元素类型是必要的,容器类型是可选的,默认为dqueue类型. 定义queue对象的示例代码如下: queue<int>q1; queue<double>q2; queue的基本操作有: 1.入队:如q.push(x):将x元素接到队列的末端: 2.出队:如q.pop() 弹出队列的第一个元素,并不会返回元素的值:

C++queue容器介绍

在备考数据结构单元测试的过程中,无意间学到了c++中的姿势.大大的惊喜.原题为SWUST OJ 972题. 统计利用先序遍历创建的二叉树的宽度(0972) Time limit(ms): 1000 Memory limit(kb): 10000 Submission: 1154 Accepted: 653 Accepted Description 利用先序递归遍历算法创建二叉树并计算该二叉树的宽度.先序递归遍历建立二叉树的方法为:按照先序递归遍历的思想将对二叉树结点的抽象访问具体化为根据接收的数

Queue容器

1.Queue (1)定义 queue单向队列与栈有点类似,一个是在同一端存取数据,另一个是在一端存入数据,另一端取出数据.单向队列中的数据是先进先出(First In First Out,FIFO). 在STL中,单向队列也是以别的容器作为底部结构,再将接口改变,使之符合单向队列的特性就可以了.因此实现也是非常方便的. 单向队列一共6个常用函数(front().back().push().pop().empty().size()),与栈的常用函数较为相似. (2)底层实现 与stack 模板类

C++学习笔记之STL标准库(八)queue容器适配器

容器适配器并没有直接维护被控序列,而是通过它里面存储的底层容器对象来实现所有的功能. queue类允许在底层数据结构的末尾插入元素,也允许从前面插入元素(先入先出). 包含头文件 #include<queue>  声明命名空间 using namespace std; 常见的queue操作: 1.void push(const T& val); //在队列末尾插入元素(通过调用底层容器的push_back函数实现) 2.void pop(); //在队列前面删除元素(通过调用底层容器的

c++STL容器之queue容器

队列:先进先出. 一.构造函数 queue<T> que; queue(const queue &que); 二.赋值操作 queue& operator=(const queue &que); 三.数据存取 push(ele); pop(); back(); front(); 四.大小操作 empty(); size(); 原文地址:https://www.cnblogs.com/xiximayou/p/12111651.html