C++STL练习
A - Vector
题目链接:
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; }
B - Deque
题目链接:
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; }
D - Vector II
题目链接:
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; }
补充queue用法:
queue 和 stack 有一些成员函数相似,但在一些情况下,工作方式有些不同:
front():返回 queue 中第一个元素的引用。如果 queue 是常量,就返回一个常引用;如果 queue 为空,返回值是未定义的。
back():返回 queue 中最后一个元素的引用。如果 queue 是常量,就返回一个常引用;如果 queue 为空,返回值是未定义的。
push(const T& obj):在 queue 的尾部添加一个元素的副本。这是通过调用底层容器的成员函数 push_back() 来完成的。
push(T&& obj):以移动的方式在 queue 的尾部添加元素。这是通过调用底层容器的具有右值引用参数的成员函数 push_back() 来完成的。
pop():删除 queue 中的第一个元素。
size():返回 queue 中元素的个数。
empty():如果 queue 中没有元素的话,返回 true。
emplace():用传给 emplace() 的参数调用 T 的构造函数,在 queue 的尾部生成对象。
swap(queue
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!