目录
创新互联建站是一家以成都网站建设、网页设计、品牌设计、软件运维、成都网站推广、小程序App开发等移动开发为一体互联网公司。已累计为除甲醛等众行业中小客户提供优质的互联网建站和软件开发服务。一·stack(栈)
STL模板
1.入栈操作
2.出栈操作
3.返回栈顶元素
4.求该栈的长度
5.栈是否为空
训练题目
题目描述
输入格式
输出格式
输入输出样例
说明/提示
二.queue(队列)
STL容器
定义队列
队列操作
训练题目
参考代码
三.vector(不定长数组)
STL容器
二维vector的定义
四.deque(双端队列)
STL容器
根据前面我所讲的一些STL容器,今天我专门整理出来了一系列的STL合集,大佬们请查收
一·stack(栈)栈这个知识点在我前面的博文里专门提到过
详见:栈浅谈(上)_程序猿的逆袭之路的博客-博客
今天我们来梳理一下栈的STL容器。
首先我们要定义栈
#include//头文件,当然也可以写万能头
stacks1;//入栈元素为 int 型
stacks2;//入队元素为string型
stacks3;//入队元素为自定义型
STL模板 接下来是栈的一些操作
1.入栈操作push(x);//将x加入栈中,即入栈操作
2.出栈操作pop();//出栈操作(删除栈顶),只是出栈,没有返回值
3.返回栈顶元素top();//返回第一个元素(栈顶元素)
4.求该栈的长度size();//返回栈中的元素个数
5.栈是否为空empty();//当栈为空时,返回 true
训练题目详见:表达式括号匹配 - 洛谷
题目描述假设一个表达式有英文字母(小写)、运算符(
+
、-
、*
、/
)和左右小(圆)括号构成,以@
作为表达式的结束符。请编写一个程序检查表达式中的左右圆括号是否匹配,若匹配,则输出YES
;否则输出NO
。表达式长度小于 255255,左圆括号少于 2020 个。
输入格式一行:表达式。
输出格式一行:
YES
或NO
。
输入输出样例输入 #1
2*(x+y)/(1-x)@输出 #1
YES输入 #2
(25+x)*(a*(a+b+b)@输出 #2
NO
说明/提示表达式长度小于 255255,左圆括号少于 2020 个。
参考代码:
#include#include#define llu unsigned long long
stacks;
using namespace std;
int main(){
ios::sync_with_stdio(false);
char s1[105];
while(cin>>s1&&s1!=0){
int n=strlen(s1);
for(int i=0;i
二.queue(队列)队列之前我们也有一篇专门的博客讲过
详见:队列浅谈(超全)_程序猿的逆袭之路的博客-博客
STL容器 定义队列queue<数据类型>q;
queueq;
queueq;
queueq;
队列操作和栈一样,队列同样可以判断队列是否为空:
q.empty(); //队列是否为空 空就是1 不是空就0
获取队列的长度:
q.size(); // 获取队列当前长度
入队与出队:
q.push(x);// x是入队元素
q.pop(); //出队
获取队首元素和获取队尾元素如下:
q.front(); //获取队首元素 可以输出
q.back(); //获取队尾元素 可以输出
获取当前队列的长度:
q.size(); //获取队列当前长度
其实队列STL容器中也有相对应的函数原型,除了q.push()是有返回值类型除外,其他函数都是void类型的。
训练题目题目描述
n 个人围成一圈,从第一个人开始报数,数到 m的人出列,再由下一个人重新从 1 开始报数,数到 m 的人再出圈,依次类推,直到所有的人都出圈,请输出依次出圈人的编号。注意:本题和《深入浅出-基础篇》上例题的表述稍有不同。书上表述是给出淘汰 n − 1 名小朋友,而该题是全部出圈。
输入格式
输入两个整数 n , m。输出格式
输出一行 n个整数,按顺序输出每个出圈人的编号。
参考代码样例 #1
样例输入 #1
10 3
样例输出 #1
3 6 9 2 7 1 8 5 10 4
提示
1 ≤ m , n ≤ 100
#include#includeusing namespace std;
queueq;
int n,cnt=1,m;
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
q.push(i);
}
while(q.size()!=1){
if(cnt%m==0){
cout<
三.vector(不定长数组)
STL容器首先我们先要定义一个vector
vectorv;//定义一个一维不定长数组
接下来是vector里面的容器
vectorv
v.clear() //移除容器中所有数据。
v.empty() //判断容器是否为空。
v.erase(pos) //删除pos位置的数据
v.erase(beg,end) //删除[beg,end)区间的数据
v.front() //传回第一个数据。
v.insert(pos,elem) //在pos位置插入一个elem拷贝
v.pop_back() //删除最后一个数据。
v.push_back(elem) //在尾部加入一个数据。
v.resize(num) //重新设置该容器的大小
v.size() //回容器中实际数据的个数。
v.begin() //返回指向容器第一个元素的迭代器
v.end() //返回指向容器最后一个元素的迭代器
二维vector的定义二维定义vector的方法一般有两种
//方法一:
int N=5,M=6;
vector>obj(N); //定义二维动态数组大小5行
for(int i=0;i>obj2(N,vector(M)); //定义二维动态数组5行6列
四.deque(双端队列)
STL容器push_back();//在队尾压入元素
push_front();//在队首压入元素
pop_back();//删除最后一个元素
pop_front();//删除第一个元素
front();//返回第一个元素的引用
back();//返回第二个元素的引用
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧