STL标准库Queue

来源:互联网 发布:飞秋2013 for mac 编辑:程序博客网 时间:2024/05/12 00:48

STL之Queue

1.简介

  • queue是队列容器,是一种“先进先出”的容器。
  • queue是简单地装饰deque容器而成为另外的一种容器。 
    #include <queue>

2.对象的默认构造

queue采用模板类实现,queue对象的默认构造形式:queue<T> queT; 
如:

queue<int> queInt;            //一个存放int的queue容器。queue<float> queFloat;     //一个存放float的queue容器。queue<string> queString;     //一个存放string的queue容器。...                 //尖括号内还可以设置指针类型或自定义类型。
  • 1
  • 2
  • 3
  • 4
  • 5

3.push()与pop()方法

queue.push(elem);   //往队尾添加元素queue.pop();   //从队头移除第一个元素queue<int> queInt;queInt.push(1);queInt.push(3);queInt.push(5);queInt.push(7);queInt.push(9);queInt.pop();queInt.pop();此时queInt存放的元素是5,7,9
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

4.对象的拷贝构造与赋值

queue(const queue &que);             //拷贝构造函数queue& operator=(const queue &que); //重载等号操作符queue<int> queIntA;queIntA.push(1);queIntA.push(3);queIntA.push(5);queIntA.push(7);queIntA.push(9);queue<int> queIntB(queIntA);    //拷贝构造queue<int> queIntC;queIntC = queIntA;              //赋值
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

5.数据存取

queue.back();   //返回最后一个元素queue.front();   //返回第一个元素queue<int> queIntA;queIntA.push(1);queIntA.push(3);queIntA.push(5);queIntA.push(7);queIntA.push(9);int iFront = queIntA.front();       //1int iBack = queIntA.back();     //9queIntA.front() = 11;           //11
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

6.大小

queue.empty();   //判断队列是否为空queue.size();        //返回队列的大小queue<int> queIntA;     queIntA.push(1);    queIntA.push(3);        queIntA.push(5);        queIntA.push(7);        queIntA.push(9);        if (!queIntA.empty()){    int iSize = queIntA.size();     //5}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

7.示例代码

#include <iostream>using namespace std;#include <queue>//队列中基本数据类型void main61(){    queue<int>  q;    q.push(1);    q.push(2);    q.push(3);    cout << "队头元素:" << q.front() << endl;    cout << "队列的大小" << q.size() <<endl;    while ( !q.empty())    {        int tmp = q.front();        cout << tmp << " ";        q.pop();    }}//队列的算法 和 数据类型的分离//teacher结点class Teacher{public:    int     age;    char    name[32];public:    void printT()    {        cout << "age:" << age << endl;    }};void main62(){    Teacher t1, t2, t3;    t1.age = 31;    t2.age = 32;    t3.age = 33;    queue<Teacher> q;    q.push(t1);    q.push(t2);    q.push(t3);    while (!q.empty())    {        Teacher tmp = q.front();        tmp.printT();        q.pop();    }}void main63(){    Teacher t1, t2, t3;    t1.age = 31;    t2.age = 32;    t3.age = 33;    queue<Teacher *> q;    q.push(&t1);    q.push(&t2);    q.push(&t3);    while (!q.empty())    {        Teacher *tmp = q.front();        tmp->printT();        q.pop();    }}void main666(){    //main61();    //main62();    main63();    cout<<"hello..."<<endl;    system("pause");    return ;}
原创粉丝点击