zoukankan      html  css  js  c++  java
  • 容器之队列的使用

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

     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;
    }
  • 相关阅读:
    Luogu P4246 [SHOI2008]堵塞的交通(线段树+模拟)
    Luogu P2619 [国家集训队2]Tree I(WQS二分+最小生成树)
    Luogu P2042 [NOI2005]维护数列(平衡树)
    Luogu P1052 过河(dp)
    Luogu P1041 传染病控制(搜索)
    Luogu P2717 寒假作业(平衡树)
    Luogu P2822 组合数问题(前缀和)
    Luogu P2827 蚯蚓(模拟)
    随机图片测试
    Luogu P2458 [SDOI2006]保安站岗(树形dp)
  • 原文地址:https://www.cnblogs.com/LuckCoder/p/14211388.html
Copyright © 2011-2022 走看看