蓝桥杯简单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.mfbz.cn/a/544831.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Go语言快速上手(一)】 初识Go语言

&#x1f493;博主CSDN主页:杭电码农-NEO&#x1f493;   ⏩专栏分类:Go语言专栏⏪   &#x1f69a;代码仓库:NEO的学习日记&#x1f69a;   &#x1f339;关注我&#x1faf5;带你学习更多Go语言知识   &#x1f51d;&#x1f51d; Go快速上手 1. 前言2. Go语言简介(为…

婚恋相亲交友小程序婚介红娘同城相亲交友APP源码征婚礼物线下活动

一、用户交互与活动 婚恋广场&#xff1a;用户可以在此浏览和发布自己的征婚信息。服务大厅&#xff1a;提供平台的各种服务介绍和客服支持。同城约会&#xff1a;用户可以根据地理位置找到附近的约会对象。相亲派、一线牵&#xff1a;组织相亲活动和线上配对。视频秀、真心话…

【数据结构】习题之链表中倒数第k个节点

&#x1f451;个人主页&#xff1a;啊Q闻 &#x1f387;收录专栏&#xff1a;《数据结构》 &#x1f389;前路漫漫亦灿灿 前言 今天的题目是求出链表中倒数第k个节点。 链表中倒数第k个节点 题目为&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; …

Java中队列

队列是一种常见的数据结构&#xff0c;它按照先进先出&#xff08;FIFO&#xff09;的原则管理元素。在 Java 中&#xff0c;队列通常是通过链表或数组实现的&#xff0c;不同的实现类在内部数据结构和操作上可能有所不同。 1.原理 1.数据结构&#xff1a;队列的基本数据结构…

七大设计原则

在软件开发的领域中&#xff0c;随着技术的不断进步和市场需求的不断变化&#xff0c;软件系统的设计和维护变得越来越重要。为了确保软件系统能够长期有效地运行&#xff0c;并且能够在未来的发展中适应新的需求和技术变化&#xff0c;提高软件系统的可维护性和可复用性成为了…

机器学习—特征预处理和降维(四)

什么是特征预处理&#xff1f; 通过一些转换函数将特征数据转换成更加适合算法模型的特征数据过程 1包含内容 数值型数据的无量纲化&#xff1a; 归一化标准化 2特征预处理API sklearn. preprocessing为什么要进行归一化 or 标准化&#xff1f; 特征的单位或者大小相差较大…

vue源码解析——diff算法/双端比对/patchFlag/最长递增子序列

虚拟dom——virtual dom&#xff0c;提供一种简单js对象去代替复杂的 dom 对象&#xff0c;从而优化 dom 操作。virtual dom 是“解决过多的操作 dom 影响性能”的一种解决方案。virtual dom 很多时候都不是最优的操作&#xff0c;但它具有普适性&#xff0c;在效率、可维护性之…

BackTrader 中文文档(十一)

原文&#xff1a;www.backtrader.com/ 基准测试 原文&#xff1a;www.backtrader.com/docu/observer-benchmark/benchmarking/ 票号 #89 是关于添加对资产的基准测试的。理智的做法是&#xff0c;即使有一种策略&#xff0c;即使是正的&#xff0c;也低于简单跟踪资产将提供的内…

第⑭讲:Ceph集群管理:守护进程管理、日志管理和端口号配置

文章目录 1.Ceph各组件守护进程的管理方式2.守护进程管理操作2.1.Ceph所有组件的守护进程列表2.2.重启当前主机中所有的Ceph组件2.3.重启主机中所有的Monitor组件2.4.重启指定主机的Monitor组件2.5.重启指定的OSD组件 3.Ceph的日志管理4.Ceph集群各组件的守护进程5.Ceph集群各组…

All in One:Prometheus 多实例数据统一管理最佳实践

作者&#xff1a;淡唯&#xff08;啃唯&#xff09;、阳其凯&#xff08;逸陵&#xff09; 引言 Prometheus 作为目前最主流的可观测开源项目之一&#xff0c;已经成为云原生监控的事实标准&#xff0c;被众多企业广泛应用。在使用 Prometheus 的时候&#xff0c;我们经常会遇…

自然语言处理: 第二十六章大模型基底之Mistral 8x7B

文章地址: 2401.04088.pdf (arxiv.org) 项目地址: mistralai/mistral-src: Reference implementation of Mistral AI 7B v0.1 model 前言: 本文意在一文深度剖析Mistral 8X7B的关键改进点。 Mistral AI是一个由DeepMind和Meta的三位前员工在巴黎共同创立的AI公司。其在23年…

tsconfig.json文件常用配置

最近在学ts&#xff0c;因为tsconfig的配置实在太多啦&#xff0c;所以写此文章用作记录&#xff0c;也作分享 作用&#xff1f; tsconfig.jsono是ts编译器的配置文件&#xff0c;ts编译器可以根据它的信息来对代码进行编译 初始化一个tsconfig文件 tsc -init配置参数解释 …

股票开户佣金最低多少?万一!A股开户多少钱合适?

开户佣金 通常情况下&#xff0c;股票开户佣金只要在达成交易的前提才收手续的费用&#xff0c;即买入和卖出的时候。目前&#xff0c;国规定收取最高佣金的比例为千分之三。 也就是说&#xff0c;最高为成交金额的3%&#xff0c;一般都会小于这个比例。最低交易佣金是5元起&a…

mac中的VirtualBox不能分配USB设备到虚拟电脑

mac中的VirtualBox不能分配USB设备到虚拟电脑 检查工具-> 扩展包是否安装 Oracle_VM_VirtualBox_Extension_Pack-7.0.14.vbox-extpack检查usb设备是否打开 检查权限 允许VirtualBox访问&#xff1a;在“安全性与隐私”窗口中&#xff0c;选择“隐私”标签。 在左侧的列表中…

微信过期文件怎么恢复?四个高招助你轻松解决(2024新版)

“微信的文件未下载的情况下过期了&#xff0c;平时微信也没有登录在电脑上&#xff0c;之前也没有进行过数据备份&#xff0c;如何找回这个文件啊&#xff01;&#xff01;感谢回答&#xff01;” “急求&#xff0c;当时忘记点击下载&#xff0c;现在急用微信文件下载不了&a…

Go gin框架(详细版)

目录 0. 为什么会有Go 1. 环境搭建 2. 单-请求&&返回-样例 3. RESTful API 3.1 首先什么是RESTful API 3.2 Gin框架支持RESTful API的开发 4. 返回前端代码 go.main index.html 5. 添加静态文件 main.go 改动的地方 index.html 改动的地方 style.css 改动…

【Linux网络编程】TCP协议

TCP协议 1.TCP协议段格式4位首位长度序号和确认序号16位窗口大小6个标志位 2.确认应答机制3.超时重传机制4.连接管理机制如何理解连接如何理解三次握手如何理解四次挥手 5.流量控制6.滑动窗口7.拥塞控制8.延迟应答9.捎带应答10.面向字节流11.粘包问题12.TCP异常情况13.TCP小结1…

通讯录的实现(单链表版本)

我们首先要知道通讯录的实现是基于单链表的基础上的&#xff0c;所以我们首先要搞懂单链表。&#xff08;注意&#xff1a;今天的代码量较多&#xff09;&#xff0c;但这不是阻挡我们前进的脚步&#xff0c;冲冲冲&#xff01;&#xff01;&#xff01; 单链表的简要概述 我们…

剖析 SPI 在 Spring 中的应用

一、概述 SPI&#xff08;Service Provider Interface&#xff09;&#xff0c;是Java内置的一种服务提供发现机制&#xff0c;可以用来提高框架的扩展性&#xff0c;主要用于框架的开发中&#xff0c;比如Dubbo&#xff0c;不同框架中实现略有差异&#xff0c;但核心机制相同…

构建第一个ArkTS应用之stateStyles:多态样式

Styles和Extend仅仅应用于静态页面的样式复用&#xff0c;stateStyles可以依据组件的内部状态的不同&#xff0c;快速设置不同样式。这就是我们本章要介绍的内容stateStyles&#xff08;又称为&#xff1a;多态样式&#xff09;。 概述 stateStyles是属性方法&#xff0c;可以…
最新文章