zoukankan      html  css  js  c++  java
  • deque 归纳

    deque是STL里面的常见容器,它的本质是一个队列,但是与队列不同是的是,它可以两边进出。

    下面是STL的一些常见操作。

    que.assign(beg,end) 将[beg; end)区间中的数据赋值给que。

    que.assign(n,elem) 将n个elem的拷贝赋值给que。

    que. at(idx) 传回索引idx所指的数据,如果idx越界,抛出out_of_range。
    que.back() 返回容器que的最后一个元素的引用。如果que为空,则该操作未定义。
    que.begin() 传回迭代器中的第一个数据地址。
    que.clear() 移除容器中所有数据。
    que.empty() 判断容器是否为空。
    que.end() 返回一个迭代器,它指向容器que的最后一个元素的下一位置。
    que.erase(pos) 删除pos位置的数据,传回下一个数据的位置。
    que.erase(beg,end) 删除[beg,end)区间的数据,传回下一个数据的位置。
    que.front() 返回容器que的第一个元素的引用。如果que为空,则该操作为空。
    que.insert(pos,elem) 在pos位置插入一个elem拷贝,传回新数据位置
    que.insert(pos,n,elem) 在pos(迭代器)位置插入>n个elem数据。无返回值
    que.insert(pos,beg,end) 在pos位置插入在[beg,end)区间的数据。无返回值
    que.max_size() 返回容器que可容纳的最多元素个数。
    que.pop_back() 删除最后一个数据。
    que.pop_front() 删除头部数据。
    que.push_back(elem) 在尾部加入一个数据。
    que.push_front(elem) 在头部插入一个数据。
    que.rbegin() 返回一个逆序迭代器,它指向容器que的最后一个元素。
    que.rend() 返回一个逆序迭代器,它指向容器que的第一个元素的前一个位置。
    que.resize(num) 重新指定队列的长度。
    que.size() 返回容器中实际数据的个数。
    que.swap(que2) 交换容器que和que2中的所有元素。
    swap(que1,que2) 交换容器que1和que2中的所有元素。
     
    下面推荐一道模板题。

    P2952 [USACO09OPEN]牛线Cow Line

    #include<bits/stdc++.h>
    using namespace std;
    deque<int>q;
    int n,T,t;
    char s,ss;
    int main()
    {
        cin>>T;
        for(int i=1;i<=T;i++)
        {
            cin>>s>>ss;
            if(s=='A')
            {
                if(ss=='L')
                {
                    t++;
                    q.push_front(t);
                }
                if(ss=='R')
                {
                    t++;
                    q.push_back(t);
                }
            }
            if(s=='D')
            {
                if(ss=='L')
                {
                    int k;
                    cin>>k;
                    for(int j=1; j<=k; j++)
                        q.pop_front();
                }
                if(ss=='R')
                {
                    int k;
                    cin>>k;    
                    for(int j=1; j<=k; j++)
                        q.pop_back();
                }
            }
        }
        while(!q.empty())
        {
            int u=q.front();
            q.pop_front();
            cout<<u<<endl;
        }
    }
  • 相关阅读:
    dreamvc框架(一)ioc容器的集成
    1040. Longest Symmetric String (25)
    虚指针存在证明及虚函数表
    Kibana中doc与search策略的区别
    AngularJS API之bootstrap启动
    AngularJS 技术总结
    Elasticsearch Javascript API增删改查
    AngularJS 中的Promise --- $q服务详解
    Ruby编程实践
    Ruby测试小代码[计算50以内的素数]
  • 原文地址:https://www.cnblogs.com/ifmyt/p/9302198.html
Copyright © 2011-2022 走看看