STL之Queue(Q)

STL的Queue(数据结构中的队列):

  特点:FIFO 先进先出;

     自适应容器(即容器适配器)

   栈适配器STL queue

   STL中实现的Queue:

    用list来实现queue; queue<int, list<int> >      q;

    用deque来实现queue; queue<int, deque<int> >   q;

    不能用vector来实现queue;

  STL中Queue实现的方法(6种):

    q.empty();

    q.size();

    q.front();

    q.back();

    q.pop();

    q.push(item);

  STL的queue没有迭代器,它只能操作队列头、队列尾的元素,而不能操作队列中间的元素;一般情况下,queue用于系统软件开发,编译器开发;

 1 #include <list>
 2 #include <deque>
 3
 4 using namespace std;
 5
 6 int main()
 7 {
 8     queue<int, deque<int> > a;
 9     queue<int, list<int> >  b;
10     //queue<int, vector<int> > c; //error
11     queue<int> q;  //相当于queue<int, deque<int> > q;
12
13     q.push(10); //队列只能从队尾插入
14     q.push(5);
15     q.push(-1);
16     q.push(20);
17
18     std::cout<<"queue size is "<<q.size()<<std::endl;
19     std::cout << "queue first item:" << q.front() << std::endl; //q.front() 查看队列头元素
20     std::cout <<"queue end item: " <<q.back() <<std::endl;      //q.front() 查看队列尾元素
21
22     q.pop();    //队列只能从头删除
23     std::cout << "queue new first item:" << q.front() << std::endl;
24
25     while(q.size() !=0)
26     {
27         std::cout << "del item :" <<q.front() << std::endl;
28         q.pop();
29     }
30
31     if(q.empty())
32     {
33         std::cout <<"now queue is empty "<<std::endl;
34     }
35
36     return 0;
37 }

 

时间: 2024-10-26 11:10:10

STL之Queue(Q)的相关文章

Java中Queue和BlockingQueue的区别

1.BlockingQueue:支持两个附加操作的 Queue,这两个操作是:检索元素时等待队列变为非空,以及存储元素时等待空间变得可用. 2.BlockingQueue 不接受 null 元素. 3.BlockingQueue 可以是限定容量的. 4.BlockingQueue 实现是线程安全的.Queue不是线程安全的.因此可以将Blockingqueue用于用于生产者-使用者队列. 根据Api修改的一个例子,大家可以修改自己体验BlockingQueue的使用 package test;

【Python】模块之queue

  Queue类即是一个队列的同步实现.队列长度可为无限或者有限.可通过Queue的构造函数的可选参数maxsize来设定队列长度.如果maxsize小于1就表示队列长度无限. 创建一个 队列 对象 最大长度为10 from Queue import Queue q = Queue(maxsize = 10)   import Queue q = Queue.Queue(maxsize = 10)   python queue模块有三种队列: 1.python queue模块的FIFO队列先进先

简单谈谈python中的Queue与多进程_python

最近接触一个项目,要在多个虚拟机中运行任务,参考别人之前项目的代码,采用了多进程来处理,于是上网查了查python中的多进程 一.先说说Queue(队列对象) Queue是python中的标准库,可以直接import 引用,之前学习的时候有听过著名的"先吃先拉"与"后吃先吐",其实就是这里说的队列,队列的构造的时候可以定义它的容量,别吃撑了,吃多了,就会报错,构造的时候不写或者写个小于1的数则表示无限多 import Queue q = Queue.Queue(10

Python Queue模块详解_python

Python中,队列是线程间最常用的交换数据的形式.Queue模块是提供队列操作的模块,虽然简单易用,但是不小心的话,还是会出现一些意外. 创建一个"队列"对象 import Queue q = Queue.Queue(maxsize = 10) Queue.Queue类即是一个队列的同步实现.队列长度可为无限或者有限.可通过Queue的构造函数的可选参数maxsize来设定队列长度.如果maxsize小于1就表示队列长度无限. 将一个值放入队列中 q.put(10) 调用队列对象的p

python队列模块Queue用法详解

一.初识Queue模块 Queue模块实现了多生产者.多消费者队列.它特别适用于信息必须在多个线程间安全地交换的多线程程序中.这个模块中的Queue类实现了所有必须的锁语义.它依赖于Python中线程支持的可用性:参见threading模块. 模块实现了三类队列:FIFO(First In First Out,先进先出,默认为该队列).LIFO(Last In First Out,后进先出).基于优先级的队列.以下为其常用方法: 先进先出  q = Queue.Queue(maxsize) 后进

Python Queue模块详解

来源:http://www.jb51.net/article/58004.htm Python中,队列是线程间最常用的交换数据的形式.Queue模块是提供队列操作的模块,虽然简单易用,但是不小心的话,还是会出现一些意外. 创建一个"队列"对象 import Queue q = Queue.Queue(maxsize = 10) Queue.Queue类即是一个队列的同步实现.队列长度可为无限或者有限.可通过Queue的构造函数的可选参数maxsize来设定队列长度.如果maxsize小

[LeetCode]232.Implement Queue using Stacks

题目 Implement the following operations of a queue using stacks. push(x) – Push element x to the back of queue. pop() – Removes the element from in front of queue. peek() – Get the front element. empty() – Return whether the queue is empty. Notes: You

Python 中的queue模块

本文转载至: https://blog.linuxeye.com/334.html 作为标准库中的queue模块,在实际的开发中也是很常见的.其实数据结构这种东西,在任何的编程语言中都是相通的,无非表达方式有些不同罢了.那么, 今天就来看看如何在Python中使用队列. 创建一个队列 import Queue q = Queue.Queue(maxsize = 10) 可见对于模块Queue里面的类Queue而言,是可以在初始化的时候指定队列大小的.队列长度可为无限或者有限.由可选参数maxsi

算法训练-卡片游戏

Description 桌上有一叠牌,从第一张牌(即位于顶面的牌)开始从上往下依次编号为1~n.当至少还剩两张牌时进行以下操作:把第一张牌扔掉,然后把新 的第一张放到整叠牌的最后.输入n,输出每次扔掉的牌,以及最后剩下的牌. Input 第一行为一个整数t(0<t<40),表示测试用例个数.以下t行每行包含一个整数n(0<n<40),为一个测试用例的牌数. Output 为每个测试用例单独输出一行,该行中依次输出每次扔掉的牌以及最后剩下的牌,每张牌后跟着一个空格. Sample I