https://vjudge.net/contest/484569#problem/A
使用C++中的vector
vector():创建一个空vector
vector(int nSize):创建一个vector,元素个数为nSize
vector(int nSize,const t& t):创建一个vector,元素个数为nSize,且值均为t
vector(const vector&):复制构造函数
vector(begin,end):复制[begin,end)区间内另一个数组的元素到vector中
void push_back(const T& x):向量尾部增加一个元素X
iterator insert(iterator it,const T& x):向量中迭代器指向元素前增加一个元素x
iterator insert(iterator it,int n,const T& x):向量中迭代器指向元素前增加n个相同的元素x
iterator insert(iterator it,const_iterator first,const_iterator last):向量中迭代器指向元素前插入另一个相同类型向量的[first,last)间的数据
iterator erase(iterator it):删除向量中迭代器指向元素
iterator erase(iterator first,iterator last):删除向量中[first,last)中元素
void pop_back():删除向量中最后一个元素
void clear():清空向量中所有元素
reference at(int pos):返回pos位置元素的引用
reference front():返回首元素的引用
reference back():返回尾元素的引用
iterator begin():返回向量头指针,指向第一个元素
iterator end():返回向量尾指针,指向向量最后一个元素的下一个位置
reverse_iterator rbegin():反向迭代器,指向最后一个元素
reverse_iterator rend():反向迭代器,指向第一个元素之前的位置
bool empty() const:判断向量是否为空,若为空,则向量中无元素
int size() const:返回向量中元素的个数
int capacity() const:返回当前向量张红所能容纳的最大元素值
int max_size() const:返回最大可允许的vector元素数量值
#include<bits/stdc++.h> using namespace std; vector <int>a; int flag; int q; int main(){ int p; int x; cin>>q; while(q--){ cin>>flag; if(flag==0){ cin>>x; a.push_back(x); } else if(flag==1){ cin>>p; cout<<a[p]<<endl; } else{ a.pop_back(); } } return 0; }
https://vjudge.net/contest/484569#problem/B
使用C++STL中的deque
deq[]:用来访问双向队列中单个的元素。
deq.front():返回第一个元素的引用。
deq.back():返回最后一个元素的引用。
deq.push_front(x):把元素x插入到双向队列的头部。
deq.pop_front():弹出双向队列的第一个元素。
deq.push_back(x):把元素x插入到双向队列的尾部。
deq.pop_back():弹出双向队列的最后一个元素。
#include<bits/stdc++.h> using namespace std; deque<int>a; int opt; int main(){ int q; int x; cin>>q; while(q--){ cin>>opt; if(opt==0){ int d; int x; cin>>d>>x; if(d==0){ a.push_front(x); } else a.push_back(x); } if(opt==1){ int p; cin>>p; cout<<a[p]<<endl; } if(opt==2){ int d; cin>>d; if(d==0){ a.pop_front(); } else a.pop_back(); } } return 0; }
https://vjudge.net/contest/484569#problem/D
和A题一样使用STL中的vector,需要注意输出时的方法
#include<bits/stdc++.h> using namespace std; int main(){ vector<int> a; int flag; int q; int n; int t; int x; cin>>n>>q; while(q--){ cin>>flag; if(flag==0){ cin>>t>>x; a.push_back(t,x); } if(flag==1){ cin>>t; a.dump(t); } if(flag==2){ cin>>t; a.clear(t); } } return 0; }