容器之队列的使用

队列,容器,适用于先进先出的数据结构

 queue 队列也是一个线性存储表,元素数据的插入在表的一端进行,在另一端删除,从而构成了一个先进先出FIFO(First In First Out)表。

插入一端称为队尾,删除一端称为队首。 

  默认使用双端队列deque来实现,queue也可看成一个容器适配器,将 deque 容器转换为 queue 容器。当然,也可以利用其他合适的序列容器作为底层实现queue容器。

 

 C++ STL对queue队列的泛化,是通过模板类型,将默认的deque双端队列类型导入,在内部创建一个序列容器对象,来处理 queue队列的数据存储和操作,包括queue队列是否为空、取队首元素、取队尾元素、元素入队和元素出队等。由于仅需要取队首和队尾元素的操作,因此queue队列容器并不提供任何类型的迭代器。

常用函数:

构造函数:queue<元素类型[,底层容器类型]> 队列对象(构造实参表);

     底层容器:deque(默认)/list

           queue<string, list<string> > qs;

      queue<string> qs;

push(elem);//向队列尾部添加元素
void pop();//删除队首元素

front(); //获取队首元素的引用

back();//获取队尾元素的引用

empty();//判断队列是否为空
size();//返回队列的大小

push -> push_back
pop -> pop_front
back -> back
front -> front
size -> size
empty -> empty
clear -> clear

测试代码

void QueueTest()
{
    //queue<string, list<string> > qs;
    queue<string> qs;
    qs.push("我们");
    qs.push("喜欢");
    qs.push("C++!");
    //输出:我们喜欢C++
    /*while (!qs.empty()) {
        cout << qs.front() << std::endl;
        qs.pop();
    }*/
    //获取队首元素
    cout << qs.front() << endl;
    //获取队尾元素
    cout << qs.back() << endl;

    //删除队首元素
    qs.pop();
    //获取队首元素
    cout << qs.front() << endl;
    cout << endl;
}
原文地址:https://www.cnblogs.com/LuckCoder/p/14211388.html