C++STL学习笔记_(4)queue

10.2.5Queue容器

Queue简介

²  queue是队列容器,是一种“先进先出”的容器。

²  queue是简单地装饰deque容器而成为另外的一种容器。

²  #include <queue> 

queue对象的默认构造

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

queue<int> queInt;            //一个存放int的queue容器。

queue<float> queFloat;     //一个存放float的queue容器。

queue<string> queString;     //一个存放string的queue容器。

...                                    

//尖括号内还可以设置指针类型或自定义类型。

queue的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

queue对象的拷贝构造与赋值

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;                              //赋值

queue的数据存取

²  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();              //1

                   int iBack = queIntA.back();                //9

                   queIntA.front() = 11;                           //11

                   queIntA.back() = 19;                           //19

queue的大小

²  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

                   }

#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<<q.front()<<" ";
        q.pop();
    }
}

//队列算法和数据类型的分离

//teacher节点
class Teacher
{
public:
    int age;
    char name[32];
public:
    void prinT()
    {
        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.prinT();
        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->prinT();
        q.pop();
    }

}

void main()
{
    //main61();
    main62();
    main63();
    cout<<"hello..."<<endl;
    return;
}

资料来源:传智播客

原文地址:https://www.cnblogs.com/wuchuanying/p/6263949.html