189 8069 5689

【C++】STL容器整理合集(上)-创新互联

目录

创新互联建站是一家以成都网站建设、网页设计、品牌设计、软件运维、成都网站推广、小程序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元起,快前往官网查看详情吧


分享标题:【C++】STL容器整理合集(上)-创新互联
地址分享:http://cdxtjz.cn/article/dggcdh.html

联系我们

您好HELLO!
感谢您来到成都网站建设公司,若您有合作意向,请您为我们留言或使用以下方式联系我们, 我们将尽快给你回复,并为您提供真诚的设计服务,谢谢。
  • 电话:028- 86922220 18980695689
  • 商务合作邮箱:631063699@qq.com
  • 合作QQ: 532337155
  • 成都网站设计地址:成都市青羊区锣锅巷31号五金站写字楼6楼

小谭建站工作室

成都小谭网站建设公司拥有多年以上互联网从业经验的团队,始终保持务实的风格,以"帮助客户成功"为已任,专注于提供对客户有价值的服务。 我们已为众企业及上市公司提供专业的网站建设服务。我们不只是一家网站建设的网络公司;我们对营销、技术、管理都有自己独特见解,小谭建站采取“创意+综合+营销”一体化的方式为您提供更专业的服务!

小谭观点

相对传统的成都网站建设公司而言,小谭是互联网中的网站品牌策划,我们精于企业品牌与互联网相结合的整体战略服务。
我们始终认为,网站必须注入企业基因,真正使网站成为企业vi的一部分,让整个网站品牌策划体系变的深入而持久。