C++之路起航——标准模板库(queue)

queue:

FIFO队列:先进先出队列。

优先队列:对队列中的元素按优先级的大小输出。

定义:

FIFO队列: queue<数据类性>变量名。

优先队列:priority_queue<数据类型>变量名。

Eg:

FIFO队列: queue<int>que//定义了一个名为que的整型的先进先出队列。

优先队列:priority_queue<int>que//定义了一个名为que的整型的优先队列。

//当类型为自定义结构时,需要重载运算符。

Eg:

struct ss//定义了一个ss的结构体
      {
          int x,y;
          ss(){}//构造函数
          ss(int xx,int yy)//重载函数
            {
                x=xx;
                y=yy;
             } 
           bool operator<(const ss& b)const{//重载函数运算符。
                return y<b.y;
              }
      };

priority_queue<ss>que;//定义使用;

注:调用操作函数时,类型也应为定义类型,例子因为重载了初始函数,所以可以用que.push(ss(1,2))来操作。

基本操作:

que.empty()//若队列不为空,则返回false,否则返回true;

que.szie()//返回队列中元素个数;

que.pop()//删除队首元素,但不返回其值;

que.front()//返回队首元素的值,但不删除该元素,(仅适用于FIFO队列)

que.back()//返回队尾元素的值,但不删除该元素,(仅适用于FIFO队列)

q.top()//返回具有最高优先级的元素的值,但不删除该元素(仅适用于优先队列)

q.push()//对queue; 在队尾压入一个新元素;对priority_queue, 在基于优先级的的当前位置插入新元素。

代码解释:

#include<cstdio>
#include<queue>
#include<iostream>

using namespace std;

struct ss
{
int x,y;
ss(){}
ss(int xx,int yy)
{
x=xx;
y=yy;
}
bool operator<(const ss& b)const{
return y<b.y;
}
};
int main()
{
priority_queue<ss>que1;
queue<int>que2;
que2.push(1);
que2.push(3);
que2.push(2);
cout<<"que2的长度";
cout<<que2.size()<<endl;
que1.push(ss(1,2));
que1.push(ss(2,3));
que1.push(ss(3,4));
cout<<"que1的长度";
cout<<que1.size();
cout<<"que2中的第一个元素";
cout<<que2.front()<<endl;
cout<<"删除que2中第一个元素"<<endl;
que2.pop();
cout<<"que2的长度";
cout<<que2.size()<<endl;
cout<<"que1的第一个元素的x与y值";
cout<<que1.top().x<<" "<<que1.top().y<<endl;
}

时间: 2024-10-07 06:29:28

C++之路起航——标准模板库(queue)的相关文章

C++之路起航——标准模板库(vector)

vector(动态数组或向量):动态分配内存空间的线性储存结构. 需要包括头文件<vector> 定义: vector<数据类型> 变量名: Eg: vector<int> s; //定义了一个数据类型为整形的动态数组; 基本操作(红色标识为常用操作): s[i]直接以下标方式访问容器中的元素.       s.front()  返回首元素. s.back()  返回尾元素.   s.push_back(x)向表尾插入元素x. s.size()  返回表长.  s.em

C++之路起航——标准模板库(set)

set(集合):http://baike.baidu.com/link?url=cb68AB-3qfEK8RoaGHJFClb4ZiWpJfc32lPOLtaNUrdxntFC738zCZsCiUlfAVRLds2aeNkgYCYCe_wdVB2TIa 需要包括头文件<set>; 定义: set<数据类型> 变量名; Eg: set<int> s;//定义了一个整型的集合s; 基本操作(红色标识为常用操作): s.begin() 返回指向第一个元素的迭代器 s.clea

C++的标准模板库queue

template <class T, class Container = deque<T> > class queue; queues是一种容器适配器,用C++中的模板写成,设计的目的在于用来操作先进先出(FIFO)的线性表.它包含了队列的基本操作: empty    判断队列是否为空. size  返回队列的大小. front       获取队列队头的元素,不删除元素. back         获取队列队尾元素,不删除元素. push_back 入队,元素增加一个. pop_

C++ 标准模板库STL 队列 queue 使用方法与应用介绍

C++ 标准模板库STL 队列 queue 使用方法与应用介绍 queue queue模板类的定义在<queue>头文件中. 与stack模板类很相似,queue模板类也需要两个模板参数,一个是元素类型,一个容器类型,元素类型是必要的,容器类型是可选的,默认为deque类型. 定义queue对象的示例代码如下: queue<int> q1; queue<double> q2; queue的基本操作有: 入队,如例:q.push(x); 将x接到队列的末端. 出队,如例:

C++ Primer 学习笔记_11_标准模板库_stack、queue队列容器与priority_queue优先队列容器

C++ Primer 学习笔记_11_标准模板库_stack.queue队列容器与priority_queue优先队列容器 1.stack堆栈 stack堆栈是一个后进先出(Last In First Out,LIFO)的线性表,插入和删除元素都只能在表的一端进行.插入元素的一端称为栈顶,而另一端称为栈底.插入元素叫入栈(Push),删除元素叫出栈(Pop).下图是堆栈示意图 堆栈只提供入栈,出栈,栈顶元素访问和判断是否为空等几种方法.采用push()方法将元素入栈:采用pop()方法出栈:采用

C++模板引出的标准模板库-----&gt;初涉

C++中模板,是相当重要的一部分,前面提到过一些基础,关于模板中需要注意的问题,会在最近整理出来,今天想说的,是由模板引出的标准模板库. 当初经常会被推荐看<STL源码剖析>这本书,听说很厉害,是C++高手都需要走过的路,可一直都不知道STL是什么,也一直忘记去查,今天整理出来的一些东西,最起码可以让未了解过这方面的童鞋认识一下. C++标准模板库,即STL:Standard Template Lib,STL的产生,是必然的.在长期的编码过程中,一些程序员发现,有一些代码经常用到,而且需求特别

C++标准库和标准模板库

C++强大的功能来源于其丰富的类库及库函数资源.C++标准库的内容总共在50个标准头文件中定义. 在C++开发中,要尽可能地利用标准库完成.这样做的直接好处包括: (1)成本:已经作为标准提供,何苦再花费时间.人力重新开发呢: (2)质量:标准库的都是经过严格测试的,正确性有保证: (3)效率:关于人的效率已经体现在成本中了,关于代码的执行效率要相信实现标准库的大牛们的水平: (4)良好的编程风格:采用行业中普遍的做法进行开发. 一.C++标准库 C++标准库的内容分为10类, 分别是:C1.语

STL学习一:标准模板库理论基础

STL(Standard Template Library,标准模板库)是惠普实验室开发的一系列软件的统称.现然主要出现在C++中,但在被引入C++之前该技术就已经存在了很长的一段时间. STL的从广义上讲分为三类:algorithm(算法).container(容器)和iterator(迭代器),容器和算法通过迭代器可以进行无缝 地连接.几乎所有的代码都采 用了模板类和模板函数的方式,这相比于传统的由函数和类组成的库来说提供了更好的代码重用机会.在C++标准中,STL被组织为下面的13个头文

C++ Primer 学习笔记_23_标准模板库_stack.

C++ Primer 学习笔记_11_标准模板库_stack.queue队列容器与priority_queue优先队列容器 1.stack堆栈 stack堆栈是一个后进先出(Last In First Out,LIFO)的线性表,插入和删除元素都只能在表的一端进行.插入元素的一端称为栈顶,而另一端称为栈底.插入元素叫入栈(Push),删除元素叫出栈(Pop).下图是堆栈示意图 堆栈只提供入栈,出栈,栈顶元素访问和判断是否为空等几种方法.采用push()方法将元素入栈:采用pop()方法出栈:采用