STL

简单的数据结构

https://ac.nowcoder.com/acm/problem/14661

双端队列和vector

可以用双端队列写和vector写。
一些关于双端队列的操作:
dequed; //创建一个双端队列
d.front() //取队首元素
d.back() //取队尾元素
push_back() //在队尾插入元素
push_front() //在队首插入元素
insert(d.begin()+1,9); //第一个元素之后插入9
size() //双端队列的大小
empty() //判断是否为空
begin() //队首的指针,指向队首元素
end() //队尾元素的下一位作为指针
rbegin() //以最后一个元素作为开始
rend() //以第一个元素的上一位作为指针
erase() //删除某一个元素
clear() //删除所有元素
pop_front() //删除队首元素
pop_back() //删除队尾元素

deque::iterator it; //迭代器
deque::reverse_iterator rit; //反向迭代器
原文链接:https://blog.csdn.net/weixin_44915226/java/article/details/105224513


双端队列代码:

#include <bits/stdc++.h>
#include <algorithm>
#define mod 1000000007
#define LL long long

using namespace std;

int main()
{
    deque<int>b;
    int n,m,s,i,a;
    cin >> n >> m;
    while(m--){
        cin >> s;
        if(s == 1){
            cin >> a;
            b.push_front(a);
        }
        if(s == 2){
            b.pop_front();
        }
        if(s == 3){
            cin >> a;
            b.push_back(a);
        }
        if(s == 4){
            b.pop_back();
        }
        if(s == 5){
            reverse(b.begin(),b.end());
        }
        if(s == 6){
            cout << b.size() << endl;
            for(int i = 0; i < b.size(); i++){
                cout << b[i] << " ";
            }
            cout << endl;
        }
        if(s == 7){
            sort(b.begin(),b.end());
        }
    }
    return 0;
}
vector代码:
#include <bits/stdc++.h>
#include <algorithm>
#define mod 1000000007
#define LL long long

using namespace std;

int main()
{
   vector<int>b;
   int n,m,a,i,s;
   cin >> n >> m;
   while(m--){
    cin >> s;
    if(s == 1){
        cin >> a;
        b.insert(b.begin() + 0,a);
    }
    if(s == 2){
        b.erase(b.begin());
    }
    if(s == 3){
        cin >> a;
        b.push_back(a);
    }
    if(s == 4){
        b.pop_back();
    }
    if(s == 5){
        reverse(b.begin(),b.end());
    }
    if(s == 6){
        cout << b.size() << endl;
        for(int i = 0; i < b.size(); i++){
            cout << b[i] << " ";
        }
        cout << endl;
    }
    if(s == 7){
        sort(b.begin(),b.end());
    }
   }
    return 0;
}

pair的用法

pair是将2个数据组合成一组数据,当需要这样的需求时就可以使用pair,如stl中的map就是将key和value放在一起来保存。
访问:用first访问成员一,second访问成员二
pair创建:
1:
pair<int,int>p
p.first = 1;
2:
pair<int,int>p(3,4);
cout << p.first << " " << p.second;
3:加入vector (插入时要make_pair())
int main()
{
    vector<pair<int,int> > s;
    s.push_back(make_pair(2,3));
    vector<pair<int,int> > ::iterator it;//迭代器
    it = s.begin();
    cout << (*it).first << " " << (*it).second;
    return 0;
}
4:加入队列
int main()
{
    queue<pair<int,int> > q;
    q.push(make_pair(1,1));
    q.push(make_pair(1,2));
    q.pop();
    cout << q.front().second;
    return 0;
}
5:加入优先队列












全部评论

相关推荐

点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务