蓝桥杯简单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.hqwc.cn/news/616277.html

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

相关文章

【深度学习实战(3)】打印自己模型的推理帧率

一、FPS(每秒传输帧数-Frames Per Second) FPS就是目标网络每秒可以处理&#xff08;检测&#xff09;多少帧(多少张图片),FPS简单来理解就是图像的刷新频率&#xff0c;也就是每秒多少帧,假设目标检测网络处理1帧要0.02s&#xff0c;此时FPS就是1/0.0250 其中Processing tim…

Unity之C#面试题(二)

内容将会持续更新&#xff0c;有错误的地方欢迎指正&#xff0c;谢谢! Unity之C#面试题&#xff08;二&#xff09; TechX 坚持将创新的科技带给世界&#xff01; 拥有更好的学习体验 —— 不断努力&#xff0c;不断进步&#xff0c;不断探索 TechX —— 心探索、心进取&a…

5分钟手把手教你 Guitar Pro v8.1.1 Build 17 中文完整激活版(附教程) 64位

吉他爱好者必备神器&#xff1a;Guitar Pro v8.1.1 Build 17深度解析 随着数字音乐制作和学习的日益普及&#xff0c;越来越多的吉他爱好者开始寻找能够帮助他们提升技能、创作音乐的专业工具。在众多吉他制作软件中&#xff0c;Guitar Pro因其强大的功能和易用的界面备受推崇…

电子章是怎么盖上去的?

电子章是怎么盖上去的呢&#xff0c;本文介绍利e-章宝(易友EU3000智能盖章软件)盖电子骑缝章的方法。如下&#xff1a; 1.在软件中导入待批量盖章的PDF文件 如下图&#xff0c;在“待盖章PDF文件”区域&#xff0c;点“添加”&#xff0c;导入待盖章PDF文件。 如上图&#xf…

Postman接口测试 - 全局变量/接口关联/加密/解密

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 全局变量和环境变量 全局变量&#xff1a;在postman全局生效的变量&#xff0c;全局唯一 环境变…

腾讯云服务器搭建网站教程,新手跟着流程一步步操作

使用腾讯云服务器搭建网站全流程&#xff0c;包括轻量应用服务器和云服务器CVM建站教程&#xff0c;轻量可以使用应用镜像一键建站&#xff0c;云服务器CVM可以通过安装宝塔面板的方式来搭建网站&#xff0c;腾讯云服务器网txyfwq.com整理使用腾讯云服务器建站教程&#xff0c;…

mybatis 枚举值,映射为枚举类型,使用typehandle

要在存储到 MySQL 时使用枚举的代码值,然后在读取时将其转换为枚举对象,你可以使用 MyBatis 的类型处理器(TypeHandler)来实现这一点。在你的情况下,你已经有了一个 PersonIdTypeHandler 类,这是一个类型处理器,用于处理 PersonIdType 枚举类型。 确保 PersonIdTypeHan…

基于Springboot+Vue的Java项目-在线视频教育平台系统(附演示视频+源码+LW)

大家好&#xff01;我是程序员一帆&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f49e;当前专栏&#xff1a;Java毕业设计 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f380; Python毕业设计 &am…

TiDB存储引擎TiKV揭秘

目录 一、TiKV 介绍 二、RocksDB 三、TiKV 与 RocksDB 架构 3.1 用户数据保存 3.2 TiKV 中 Region 一、TiKV 介绍 TiKV 是一个分布式事务型的键值数据库&#xff0c;提供了满足 ACID 约束的分布式事务接口&#xff0c;并且通过 Raft 协议保证了多副本数据一致性以及高可用。…

量子信息产业生态研究(一):关于《量子技术公司营销指南(2023)》的讨论

写在前面。量子行业媒体量子内参&#xff08;Quantum Insider&#xff09;编制的《量子技术公司营销指南》是一本实用的英文手册&#xff0c;它旨在帮助量子科技公司建立有效的营销策略&#xff0c;同时了解如何将自己定位成各自的行业专家。本文对这篇指南的主要内容进行了翻译…

两步解决 Flutter Your project requires a newer version of the Kotlin Gradle plugin

在开发Flutter项目的时候,遇到这个问题Flutter Your project requires a newer version of the Kotlin Gradle plugin 解决方案分两步: 1、在android/build.gradle里配置最新版本的kotlin 根据提示的kotlin官方网站搜到了Kotlin的最新版本是1.9.23,如下图所示: 同时在Ko…

相机参数的意义

相机标定的意义&#xff1a; 相机标定&#xff1a;使用带有pattern的标定板来求解相机参数的过程&#xff1b;用一个简化的数学模型来代表复杂的三维到二维的成像过程&#xff1b;相机参数包括&#xff1a;相机内参&#xff08;焦距等&#xff09;&#xff0c;外参&#xff08…