zoukankan      html  css  js  c++  java
  • STL双端队列 deque

    头文件#include<deque>


     构造方法

    ①、创建一个没有任何元素的双端队列:deque<type> deq

    ②、用另一个类型相同双端队列初始化该双端队列:deque<type> deq(otherDeq)

    ③、初始化一个固定size的双端队列:deque<type> deq(size)

    ④、初始化n个相同元素的双端队列:deque<type> deq(n, element)

    ⑤、初始化双端队列中的某一段元素,从beginend-1:deque<type> deq(begin, end)


     操作

    ①、赋值n个元素的拷贝给双端队列:deq.assign(n,elem)    

    ②、赋值一段迭代器的值给双端队列:deq.assign(beg,end)

    ③、添加一个元素在开头(结尾同理):deq.push_front(elem) 

    ④、删除第一个元素(结尾同理):deq.pop_front()   

    ⑤、取固定位置的元素:deq.at(index)

    ⑥、取固定位置的元素:deq[index]       

    ⑦、返回第一个元素(不检测容器是否为空):deq.front()

    ⑧、返回最后一个元素(不检测容器是否为空):deq.back()


     例题

    HUD6375 度度熊学队列

    #include<bits/stdc++.h>
    
    using namespace std;
    #define mem(a,b) memset(a,b,sizeof(a))
    const int maxn=15e4+10;
    int n,m,w;
    map<int,deque<int> > a;
    void read(int &x)
    {
        char ch = getchar();x = 0;
        for (; ch < '0' || ch > '9'; ch = getchar());
        for (; ch >='0' && ch <= '9'; ch = getchar()) x = x * 10 + ch - '0';
    }
    int main()
    {
        int i,j;
        while(scanf("%d%d",&n,&m)!=EOF){
            for(i=1;i<=n;i++) a[i].clear();
            int ki,u,v;
            while(m--){
                read(ki);
                if(ki==1){
                    read(u),read(w),read(v);
                    if(w==0) a[u].push_front(v);
                    else a[u].push_back(v);
                }
                else if(ki==2){
                    read(u),read(w);
                    if(a[u].empty()){
                        printf("-1
    ");
                    }
                    else{
                        if(w==0){
                            printf("%d
    ",a[u].front());
                            a[u].pop_front();
                        }
                        else{
                            printf("%d
    ",a[u].back());
                            a[u].pop_back();
                        }
                    }
                }
                else{
                    read(u),read(v),read(w);
                    if(w){
                        a[u].insert(a[u].end(),a[v].rbegin(),a[v].rend()),a[v].clear();
                    } 
                    else a[u].insert(a[u].end(),a[v].begin(),a[v].end()),a[v].clear();
                }
            }
        }
        return 0;
    }
    View Code
  • 相关阅读:
    22.抽象类
    21.多态
    20.修饰符
    19.继承
    day46---MySQL数据库进阶(一)
    day45---mysql数据库基本操作初阶(二)
    day45---计算机安全项目(癞蛤蟆)
    day44---数据库初阶(一)
    day44---windows下安装MySQL-5.6.37
    day42---几种network IO模型
  • 原文地址:https://www.cnblogs.com/solvit/p/9648422.html
Copyright © 2011-2022 走看看