蓝桥杯简单STL

目录

vector

vector定义

vector访问

常用函数

size()

​编辑

push_back(num)

pop_back()

clear

迭代器(iterator)

迭代器定义

遍历数组示例

insert(it, element)  

erase(it)


标准模板库--STL,它包含了多种预定义的容器、算法和迭代器,极大地简化了编程工作。简单的说就是有了一些可以直接用的函数。

vector

vector是C++标准模板库(STL)中提供的一种模板类,它代表了一个可以动态调整大小的数组,
在编程中,我们通常称之为“变长数组”,意味着其长度可以根据需要自动增长或缩小。

变长数组,在C语言中定义数组的时候int arr[100],中括号里面的必须是一个常量,当我们不知道数组的大小的时候,用C语言就不是很方便。

在使用vector加一个头文件就可以———#include<vector>

vector定义

vector的定义语法

vector<typename> name;这个只是定义了一个数组,长度未知,数组中的数字默认为0

vector<typename> name(n);这个数组长度为n,数组中数字为0

vector<typename> name(n,num);这个数组长度为n,数组中每个数字为num

vcctor的使用示例:
定义一个整数类型的vector——vector<int>name;

定义一个双精度浮点数类型的vector——vcctor<double>name;

定义一个字符类型的vector——vector<char>name;

定义一个结构体类型的vector——vector<node>name;(其中node是已定义的结构体类型)

#include<iostream>
#include<vector> 
using namespace std;
int main()
{int n;cin>>n;vector <int>arr(n);for(int i=0;i<arr.size();i++)cout<<arr[i]<<' ';return 0;} 

vector访问

vector访问可以像C语言那样用下标访问——arr[i];

常用函数

push_back(element)——向vector的末尾添加一个新元素。

pop_back()——删除vector中的最后一个元素。

size()——返回vector中元素的个数

clear()——删除vector中的所有元素,使其变为空。

insert(it, element)——在指定的迭代器位置插入一个新元素。

erase(it)——删除指定迭代器位置的元素。

size()

输出数组的元素个数

 #include<iostream>
#include<vector> 
using namespace std;
int main()
{int n;cin>>n;vector <int>arr;for(int i=0;i<n;i++)arr.push_back(i);cout<<"元素个数:"<<arr.size()<<endl; return 0;} 

push_back(num)

直接在末尾加如num这个数字

#include<iostream>
#include<vector> 
using namespace std;
int main()
{int n;cin>>n;vector <int>arr;for(int i=0;i<n;i++)arr.push_back(i);cout<<"元素个数:"<<arr.size()<<endl; cout<<"输出元素:"; for(int i=0;i<arr.size();i++)cout<<arr[i]<<' ';return 0;} 

pop_back()

作用是删除最后的元素

 #include<iostream>
#include<vector> 
using namespace std;
int main()
{int n;cin>>n;vector <int>arr;for(int i=0;i<n;i++)arr.push_back(i);cout<<"元素个数:"<<arr.size()<<endl; cout<<"输出元素:"; for(int i=0;i<arr.size();i++)cout<<arr[i]<<' ';arr.pop_back();cout<<endl<<"pop_back()一次之后"<<endl;  cout<<"元素个数:"<<arr.size()<<endl;cout<<"输出元素:"; for(int i=0;i<arr.size();i++)cout<<arr[i]<<' ';return 0;} 

clear

#include<iostream>
#include<vector> 
using namespace std;
int main()
{int n;cin>>n;vector <int>arr;for(int i=0;i<n;i++)arr.push_back(i);cout<<"元素个数:"<<arr.size()<<endl; cout<<"输出元素:"; for(int i=0;i<arr.size();i++)cout<<arr[i]<<' ';arr.clear();cout<<endl<<"clear()"<<endl;  cout<<"元素个数:"<<arr.size()<<endl;cout<<"输出元素:"; for(int i=0;i<arr.size();i++)cout<<arr[i]<<' ';return 0;} 

在介绍后两个函数之前先来了解一下迭代器

迭代器(iterator)

迭代器,我之前的理解就是循环,其实不是的,专业点来说迭代器是一个变量,指向容器(例如数组-vector,字符串-string)的元素的一个变量,“指向”是不是有些耳熟,从这看,迭代器和指针类似

这里我们就介绍一下正向迭代器

迭代器定义

容器类名::iterator 迭代器名;

例如:vector<int>::iterator p

此时p就相当于就相当于指针,我们可以给p进行指向;

遍历数组示例

begin()是获得数组开始的元素

end()是获得数组结尾的那个元素

 #include<iostream>#include<vector>using namespace std;int main(){int n;cin>>n;vector <int>arr;for(int i=0;i<n;i++)arr.push_back(i);//定义迭代器 vector<int>::iterator p=arr.begin();for(int i=0;i<arr.size();i++){cout<<*(p+i)<<' ';}return 0;}

insert(it, element)  

insert(it, element)——在指定的迭代器位置插入一个新元素 (其中it是迭代器的所指的位置,element是要插入的元素)

假设:我们想在数组的第4个未知插入10;

begin()是获得第一个元素,后面加上数字几,就往后移动几个元素

 #include<iostream>#include<vector>using namespace std;int main(){int n;cin>>n;vector <int>arr;for(int i=0;i<n;i++)arr.push_back(i);//定义迭代器 vector<int>::iterator p=arr.begin();cout<<"插入前"<<endl;cout<<"数组元素个数:"<<arr.size()<<endl; cout<<"数组元素:";for(int i=0;i<arr.size();i++)	cout<<*(p+i)<<' ';//定义一个迭代器vector<int>::iterator p3=arr.begin()+3;arr.insert(p3,10); cout<<endl<<"插入后"<<endl;cout<<"数组元素个数:"<<arr.size()<<endl; cout<<"数组元素:";for(int i=0;i<arr.size();i++)	cout<<*(p+i)<<' ';return 0;}

erase(it)

erase(it)——删除指定迭代器位置的元素。

假设要删除第5个位置的元素

 #include<iostream>#include<vector>using namespace std;int main(){int n;cin>>n;vector <int>arr;for(int i=0;i<n;i++)arr.push_back(i);//定义迭代器 vector<int>::iterator p=arr.begin();cout<<"删除前"<<endl;cout<<"数组元素个数:"<<arr.size()<<endl; cout<<"数组元素:";for(int i=0;i<arr.size();i++)	cout<<*(p+i)<<' ';//定义一个迭代器vector<int>::iterator p3=arr.begin()+4;arr.erase(p3); cout<<endl<<"删除后"<<endl;cout<<"数组元素个数:"<<arr.size()<<endl; cout<<"数组元素:";for(int i=0;i<arr.size();i++)	cout<<*(p+i)<<' ';return 0;}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/803034.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

联想电脑开启虚拟化失败,开启虚拟化却提示还没有开启虚拟化

安装虚拟机的时候&#xff0c; 电脑要开启虚拟化&#xff0c; Intel VT&#xff0c; 去BIOS开启了&#xff0c; 但是依然报错&#xff0c;说虚拟化处于禁用状态。 解决方案&#xff1a; 去联想官方&#xff0c;下载BIOS更新包&#xff0c;更新BIOS。 更新文档&#xff1a; 联…

Harmony鸿蒙南向驱动开发-DAC

DAC&#xff08;Digital to Analog Converter&#xff09;是一种通过电流、电压或电荷的形式将数字信号转换为模拟信号的设备。 DAC模块支持数模转换的开发。它主要用于&#xff1a; 作为过程控制计算机系统的输出通道&#xff0c;与执行器相连&#xff0c;实现对生产过程的自…

MySQL数据库 数据库基本操作(四):表的增删查改(下)

1. 联合查询 注:联合查询是面试中的重点,只要考到sql,大多数情况下都考的是联合查询,而且联合查询也是我们学习中的难点. 1.1 笛卡尔积 在实际开发中,数据往往来自不同的表,所以要多表联合查询.多表查询是对多张表的数据笛卡尔积. 它们是两张表的各行数据通过全排列得到的. …

基于SSM+Jsp+Mysql的高校毕业设计管理系统

开发语言&#xff1a;Java框架&#xff1a;ssm技术&#xff1a;JSPJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包…

秋招复习笔记——八股文部分:操作系统

笔试得刷算法题&#xff0c;那面试就离不开八股文&#xff0c;所以特地对着小林coding的图解八股文系列记一下笔记。 这一篇笔记是图解系统的内容。 硬件结构 CPU执行程序 计算机基本结构为 5 个部分&#xff0c;分别是运算器、控制器、存储器、输入设备、输出设备&#xf…

轻量的 WebHook 工具:歪脖虎克

本篇文章聊聊轻量的网络钩子&#xff08;WebHook&#xff09;工具&#xff1a;歪脖虎克。 写在前面 这是一篇迟到很久的文章&#xff0c;在 21 年和 22 年的时候&#xff0c;我分享过两篇关于轻量的计划任务工具 Cronicle 的文章&#xff1a;《轻量的定时任务工具 Cronicle&a…

运筹学基础(六)列生成算法(Column generation)

文章目录 前言从Cutting stock problem说起常规建模Column generation reformulation 列生成法核心思想相关概念Master Problem (MP)Linear Master Problem (LMP)Restricted Linear Master Problem (RLMP)subproblem&#xff08;核能预警&#xff0c;非常重要&#xff09; 算法…

kvm基础命令

前言 一、基础命令 1.虚拟机查看 2.虚拟机开启与关闭 3.虚拟机删除 4.查看虚拟机的配置 5.配置文件重定向 6.命令行登录虚拟机 二、调整虚拟机磁盘大小 三、虚拟机创建快照 四、virsh console报错 总结 前言 今天我们分享一下如何使用kvm基础命令。 一、基础命令 1.虚拟机查看…

杨笛一新作:社恐有救了,AI大模型一对一陪聊,帮i人变成e人

ChatGPT狂飙160天&#xff0c;世界已经不是之前的样子。 新建了免费的人工智能中文站https://ai.weoknow.com 新建了收费的人工智能中文站ai人工智能工具 更多资源欢迎关注 在社交活动中&#xff0c;大语言模型既可以是你的合作伙伴&#xff08;partner&#xff09;&#xff0…

MySQL-用户与权限管理:用户管理、权限管理、角色管理

用户与权限管理 用户与权限管理1.用户管理1.1 登录MySQL服务器1.2 创建用户1.3 修改用户1.4 删除用户1.5 设置当前用户密码1.6 修改其它用户密码 2. 权限管理2.1 权限列表2.2 授予权限的原则2.3 授予权限2.4 查看权限2.5 收回权限 访问控制连接核实阶段请求核实阶段 3. 角色管理…

Redis 八种常用数据类型常用命令和应用场景

5 种基础数据类型&#xff1a;String&#xff08;字符串&#xff09;、List&#xff08;列表&#xff09;、Set&#xff08;集合&#xff09;、Hash&#xff08;散列&#xff09;、Zset&#xff08;有序集合&#xff09;。 3 种特殊数据类型&#xff1a;HyperLogLog&#xff0…

【git】checkout origin/xxx 出现 detached HEAD问题

git 检出远程分支出现Head分离的是什么原因导致的呢&#xff1f;&#xff1f; 因为Head指向了origin的一个commit, 但是这个origin分支你的本地又没有&#xff0c;也就是说你本地没有追踪这个分支&#xff0c;那就要track一下 git checkout -h 看一下有没有追踪的命令 果不其…

服务器开发 Socket 相关函数

Socket 函数 #include <sys/types.h> #include <sys/socket.h> int socket(int domain, int type, int protocol)domain: AF_INET 这是大多数用来产生 socket 的协议&#xff0c;使用TCP或UDP来传输&#xff0c;用IPv4的地址 AF_INET6 与上面类似&#xff0c;不过…

Python高级

不定长参数 位置不定长参数&#xff0c;获取参数args会整合为一个元组 def info(*args):print(arg is, args)print(type(arg) is, type(args))info(1, 2, 3, 4, a, b)# 输出 # arg is (1, 2, 3, 4, a, b) # type(arg) is <class tuple> 关键字不定长参数&#xff0c;&…

蓝桥杯2023年第十四届省赛真题-棋盘

solution1(暴力) 暴力蓝桥杯可以过&#xff0c;虽然理论上会超时~ #include<iostream> using namespace std; const int maxn 2010; int a[maxn][maxn] {0};//0白棋&#xff0c;1黑棋 int main(){int n, m, x1, x2, y1, y2;scanf("%d%d", &n, &m)…

可视化大屏 附源码(Vue3 + TS + DataV + ECharts)

目录 前言 ✨项目代码 1、带有node_modules的项目包 &#x1f680; 2、不带有node_modules的项目包 &#x1f680; ⚒️项目屏幕大小调整 &#x1f48e; 使用开源项目 1、DataV &#x1f530; 2、Echarts &#x1f530; 3、PPchart &#x1f530; 4、表格平滑滚动 &a…

C# 如何修改项目名称

目录 背景具体步骤1、Visual Studio中修改项目名和程序集名称以及命名空间2、修改项目文件夹名3、修改解决方案里项目的路径4、再次打开解决方案&#xff0c;问题解决步骤总结 名词解释解决方案&#xff08;Solution&#xff09;项目&#xff08;Project&#xff09;程序集&…

sa-token非Web上下文无法获取Request

0x02 非Web上下文无法获取Request 问题定位 在我们使用sa-token安全框架的时候&#xff0c;有时候会提示&#xff1a;SaTokenException:非Web上下文无法获取Request 错误截图&#xff1a; 在官方网站中&#xff0c;查看常见问题排查&#xff1a; 非Web上下文无法获取Reques…

运行游戏找不到steam_api64.dll怎么办?steam_api64.dll丢失解决方法

steam_api64.dll是64位Windows操作系统上的一个动态链接库&#xff08;DLL&#xff09;文件&#xff0c;其大小通常在1.5-3.5 MB之间。这个文件对于Steam平台至关重要&#xff0c;因为它实现了游戏验证、更新等功能&#xff0c;并确保了用户拥有游戏的合法使用权。它通过提供一…

基于单片机水塔水位检测控制系统设计

**单片机设计介绍&#xff0c; 基于单片机水塔水位检测控制系统设计 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机水塔水位检测控制系统设计的主要目标是实现水塔水位的自动监测与控制&#xff0c;确保水塔内的水位始…