当前位置: 首页 > news >正文

蓝桥杯-常用STL(一)

常用STL

  • 🎈1.动态数组
  • 🎈2.vector的基础使用
    • 🔭2.1引入库
    • 🔭2.2构造一个动态数组
    • 🔭2.3插入元素
    • 🔭2.4获取长度并且访问元素
    • 🔭2.5修改元素
    • 🔭2.6删除元素
    • 🔭2.7清空
  • 🎈3.vector的基础应用
    • 🔭3.1例题一
  • 🎈4.用动态数组存储自定义数据
    • 🔭4.1二维的动态数组

🎈1.动态数组

🔎有些时候想开一个数组,但是却不知道要开多大长度的数组合适,因此我们需要用到的数组可能会根据情况变动。这时候我们就需要用到动态数组。所谓动态数组,也就是不定长数组,数组的长度是可以根据我们的需要动态改变的。动态数组的实现也不难,但是C++里面有已经写好的标准模板库(Standard Template Library),也就是我们常说的STL库,实现了集合、映射表、栈、队列等数据结构和排序、查找等算法。我们可以很方便的调用标准库来减少我们的代码量。C++中动态数组写作vector

🎈2.vector的基础使用

🔭2.1引入库

引入库:C++vector的实现是在一个<vector>头文件中,在代码的开头引入这个头文件,并在引入所有头文件之后加上一句using namespace std;

#include <vector>
using namespace std;
int main()
{return 0;
}

🔭2.2构造一个动态数组

构造一个动态数组:C++中直接构造出一个vector的语句为:vector<T>vec.这样我们定义了一个名为vec的储存T类型数据的动态数组。其中T是我们数组要储存的数据类型,可以是int、float、double、或其他自定义的数据类型等等。初始的时候vec是空的。比如vector<int>a定义了一个储存整数的动态数组a.

🔭2.3插入元素

C++中通过push_back()方法在数组最后面插入一个新的元素。

#include <vector>
using namespace std;
int main()
{vector<int> vec;//[]vec.push_back(1);//[1]vec.push_back(2);//[1,2]vec.push_back(3);//[1,2,3]return 0;
}

🔭2.4获取长度并且访问元素

C++中通过size()方法获取vector的长度,通过[]操作直接访问vector中的元素,这一点和数组是一样的。

#include <iostream>
#include <vector>
using namespace std;
int main()
{vector<int> vec;//[]vec.push_back(1);//[1]vec.push_back(2);//[1,2]vec.push_back(3);//[1,2,3]for (int i = 0; i < vec.size(); i++){cout << vec[i] << endl;}return 0;
}

在这里插入图片描述

🔭2.5修改元素

C++中修改vector中的某个元素很简单,只需要用=给它赋值就好了。

#include <iostream>
#include <vector>
using namespace std;
int main()
{vector<int> vec;//[]vec.push_back(1);//[1]vec.push_back(2);//[1,2]vec.push_back(3);//[1,2,3]vec[1] = 3;//[1,3,3]vec[2] = 2;//[1,3,2]for (int i = 0; i < vec.size(); i++){cout << vec[i] << endl;}return 0;
}

在这里插入图片描述

🔭2.6删除元素

和插入一样,删除元素也只能在动态数组的末端进行操作。C++中通过pop_back()方法删除动态数组的最后一个元素。

#include <iostream>
#include <vector>
using namespace std;
int main()
{vector<int> vec;//[]vec.push_back(1);//[1]vec.push_back(2);//[1,2]vec.push_back(3);//[1,2,3]vec.pop_back();//[1,2]vec.pop_back();//[1]return 0;
}

🔭2.7清空

C++中只需要调用clear()方法就可以清空vector
C++vectorclear()只是清空vector,并不会清空开的内存。用一种方法可以清空vector的内存:vector<int>().swap(v);

🎈3.vector的基础应用

🔭3.1例题一

🔎题目:将1-10的平方依次存储到刚才定义的vector里面。这里我们需要借助一个循环来完成,循环枚举1到10,并且将这些值输出。

🏆算法

#include <iostream>
#include <vector>
using namespace std;
int main()
{vector<int> v;for (int i = 1; i <= 10; i++){v.push_back(i * i);}for (int i = 0; i < v.size(); i++){cout << v[i] << " ";}cout << endl;return 0;
}

在这里插入图片描述

🎈4.用动态数组存储自定义数据

✅动态数组不仅仅可以储存基本的数据类型,还能储存自定义数据类型,比如结构体。

#include <iostream>
#include <vector>
using namespace std;
struct Student
{string name;int age;
};
int main()
{vector<Student> class1;Student stu1, stu2;stu1.name = "ZHANGSAN";stu1.age = 18; stu2.name = "LISI";stu2.age = 19;class1.push_back(stu1);class1.push_back(stu2);return 0;
}

🔭通过上面的学习,我们知道可以通过push_back()来向动态数组添加一个元素。如果我们需要一个长度为n的,全是1的动态数组。我们可以像下面这样写:

int n = 10;
vector<int> vec;
for (int i = 0; i < n; i++)
{vec.push_back(1);
}

✅其实,我们可以通过一个构造函数快速构建这样的一个动态数组。所谓构造函数,就是在我们定义一个对象的时候,可以赋予初始值。

int n = 10;
vector<int> vec(n,1);

上面的代码,我们定义了一个vector的时候,调用构造函数,第一个参数表示初识的动态数组的长度,第二个参数表示初识数组里面每个元素的值。如果不传入第二个参数,那么初始值都是0
:上面用的构造函数的写法和用循环是等价的,通过合理的使用构造函数,可以减少代码量。

🔭4.1二维的动态数组

✅我们都知道,数组可以开二维的,那么动态数组能用二维的吗?答案是肯定的,动态数组也支持二维的。vector<vector<int> >vec2,这样就定义了一个二维的动态数组。注意:<int> >中间有一个空格,这个空格一定要加上,否则在一些老版的编译器上将不能通过编译。
🔎通过上面的方法定义的二维数组,每一维都是空的,我们必须要一维一维的赋值。比如我们规定第一维的大小是n

#include <iostream>
#include <vector>
using namespace std;
int main()
{int n = 5;vector<vector<int> >vec2;for (int i = 0; i < n; i++){vector<int> x(i + 1, 1);vec2.push_back(x);}for (int i = 0; i < n; i++){for (int j = 0; j < vec2[i].size(); j++){cout << vec2[i][j] << " ";}cout << endl;}cout << endl;return 0;
}

在这里插入图片描述
✅二维动态数组的每一维的长度都可以不一样,可以是任意形状的,借助构造函,我们可以快速构造一个n行m列的动态数组,每个元素的初始值是0vector<vector<int> >vec2(n,vector<int>(m,0))
🏆这里我们尝试定义一个二维的储存整数的动态数组v2d,接下来我们给第一维赋值,第一维的大小为5,每个元素是一个一维的vector。我们这里通过vector<int>()快速构造一个一维的vector。试写出11=1~55=25的乘法表。

#include <iostream>
#include <vector>
using namespace std;
int main()
{vector<vector<int> >v2d;for (int i = 0; i < 5; i++){v2d.push_back(vector<int>());}for (int i = 0; i < v2d.size(); i++){for (int j = 0; j <= i; j++){v2d[i].push_back((i + 1) * (j + 1));}}for (int i = 0; i < v2d.size(); i++){for (int j = 0; j < v2d[i].size(); j++){cout << i + 1 << " * " << j + 1 << " = " << v2d[i][j] << "\t";}cout << endl;}return 0;
}

在这里插入图片描述

相关文章:

蓝桥杯-常用STL(一)

常用STL &#x1f388;1.动态数组&#x1f388;2.vector的基础使用&#x1f52d;2.1引入库&#x1f52d;2.2构造一个动态数组&#x1f52d;2.3插入元素&#x1f52d;2.4获取长度并且访问元素&#x1f52d;2.5修改元素&#x1f52d;2.6删除元素&#x1f52d;2.7清空 &#x1f38…...

SQL查询数据库环境(dm8达梦数据库)

SQL查询数据库环境dm8达梦数据库 环境介绍 环境介绍 某些环境没有图形化界面,可以使用sql语句查询达梦数据库环境情况 SELECT 实例名称 数据库选项,INSTANCE_NAME 数据库选项相关参数值 FROM V$INSTANCE UNION ALL SELECT 授权用户,(SELECT AUTHORIZED_CUSTOMER FROM V$LICE…...

DolphinScheduler + Amazon EMR Serverless 的集成实践

01 背景 Apache DolphinScheduler 是一个分布式的可视化 DAG 工作流任务调度开源系统&#xff0c;具有简单易用、高可靠、高扩展性、⽀持丰富的使用场景、提供多租户模式等特性。适用于企业级场景&#xff0c;提供了一个可视化操作任务、工作流和全生命周期数据处理过程的解决方…...

【服务器APP】利用HBuilder X把网页打包成APP

目录 &#x1f33a;1. 概述 &#x1f33c;1.1 新建项目 &#x1f33c;1.2 基础配置 &#x1f33c;1.3 图标配置 &#x1f33c;1.4 启动界面配置 &#x1f33c;1.5 模块配置 &#x1f33c;1.6 打包成APP &#x1f33a;1. 概述 探讨如何将网页转化为APP&#xff0c;这似乎…...

vue3 组合式API获取子组件的属性和方法

在vue2中&#xff0c;获取子组件实例的方法或者属性时&#xff0c;父组件直接通过ref即可直接获取子组件的属性和方法&#xff0c;如下&#xff1a; // father.vue <child ref"instanceRef" /> this.$ref[instanceRef].testVal this.$ref[instanceRef].testFun…...

[数据结构+算法] 给一棵树和一个sum,判断是否存在从root到叶子结点的path之和等于sum?

[数据结构算法] 给一棵树和一个sum&#xff0c;判断是否存在从root到叶子结点的path之和等于sum&#xff1f; 可以使用两种方法求解 递归 CheckTreeSumRecursive 问题转换为递归判断左右子树是否满足路径和等于sum减去当前节点的值。 迭代 CheckTreeSumNonRecursive 使用两个…...

非阿里云注册域名如何在云解析DNS设置解析?

概述 非阿里云注册域名使用云解析DNS&#xff0c;按照如下步骤&#xff1a; 添加域名。 添加解析记录。 修改DNS服务器。 DNS服务器变更全球同步&#xff0c;等待48小时。 添加解析记录 登录云解析DNS产品控制台。 在 域名解析 页面中&#xff0c;单击 添加域名 。 在 …...

微服务-微服务Alibaba-Nacos注册中心实现

1. 系统架构的演变 俗话说&#xff0c; 没有最好的架构&#xff0c;只有最合适的架构。 微服务架构也是随着信息产业的发展而出现的最有普 遍适用性的一套架构模式。通常来说&#xff0c;我们认为架构发展历史经历了这样一个过程&#xff1a;单体架构——> 垂直架构 ——&g…...

多符号表达式的共同子表达式提取教程

生成的符号表达式&#xff0c;可能会存在过于冗长的问题&#xff0c;且多个符号表达式中&#xff0c;有可能存在相同的计算部分&#xff0c;如果不进行处理&#xff0c;计算过程中会导致某些算式计算多次&#xff0c;从而影响计算效率。 那么多个符号表达式生成函数时&#xf…...

Java 反射获取属性名、属性类型、属性值、判断属性类型

1.代码 /*** 通过反射获取对象属性名、属性类型、属性值** param t 需要反射的对象* author hcx*/public static <T> void reflect(T t){// 获取所有属性// getDeclaredFields 不包含父类&#xff0c;包含私有属性// getFields 包含父类属性Field[] fields t.getClass(…...

Docker私有仓库搭建

目录 1.registry私有仓库 拉取registry镜像 修改docker配置文件并重启 运行registry容器 修改想要上传的镜像的标签并上传验证 再另一台主机上获取此镜像 浏览器验证 2.Docker--harbor私有仓库部署与管理 什么是Harbor Harbor的特性 Harbor的构成 Harbor部署 准备…...

C语言第十三弹---VS使用调试技巧

✨个人主页&#xff1a; 熬夜学编程的小林 &#x1f497;系列专栏&#xff1a; 【C语言详解】 【数据结构详解】 VS调试技巧 1、什么是bug 2、什么是调试&#xff08;debug&#xff09;&#xff1f; 3、Debug和Release​编辑​ 4、VS调试快捷键 4.1、环境准备 4.2、调试…...

AST反混淆实战-jsjiamiv7最高配置

js加密混淆网站 https://www.jsjiami.com/一、混淆demo生成 01 打开目标网址 https://www.jsjiami.com/ 02 按照顺序加密混淆二、混淆前后demo 混淆前的源码 (function(w, d) { w.update "2023年01月17日05:34:29更新"; d.info "本站历时1年半研发的新版本V7…...

colorThief+vite+react使用方法

官网: Color Thief npm i --save colorthief 第一种,import载入图片 经过尝试,在vite中,要引入.mjs版本 import ColorThief from colorthief/dist/color-thief.mjs 第一种,通过import载入图片 import aa from /assets/123.jpgconst [resultColor,setResultColor]useState() …...

Hive(15)中使用sum() over()实现累积求和和滑动求和

目的&#xff1a; 三个常用的排序函数row_number(),rank()和dense_rank()。这三个函数需要配合开窗函数over()来实现排序功能。但over()的用法远不止于此&#xff0c;本文咱们来介绍如何实现累计求和和滑动求和。 1、数据介绍 三列数据&#xff0c;分别是员工的姓名、月份和…...

2024年Java搭建面试题

2024年Java实战面试题&#xff08;北京&#xff09;_java 5 年 面试-CSDN博客 1、搭建docker容器 # 安装依赖的环境 yum -y install yum-utils device-mapper-persistent-data lvm2 # 设置镜像源为阿里 yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/lin…...

二维数组的学习

前言 在前面我们学习了一维数组&#xff0c;但是有的问题需要用二位数组来解决。 二维数组常称为矩阵&#xff0c;把二维数组写成行和列的排列形式&#xff0c;可以有助于形象化的理解二维数组的逻辑结构。 一、二维数组的定义 二维数组定义的一般格式&#xff1a; 数据类型 数…...

Java集合(List集合)

什么是集合&#xff1f; 什么是集合&#xff1f;集合就是“由若干个确定的元素所构成的整体”&#xff0c;在程序中&#xff0c;一般代表保存 若干个元素&#xff08;数据&#xff09;的某种容器类。 在Java中&#xff0c;如果一个Java对象可以在内部持有&#xff08;保存&…...

7、Json文件的操作总结【robot framework】

1、JSONLibrary简介 Robot Framework 是一种通用的自动化测试框架&#xff0c;它支持使用关键字驱动的测试&#xff0c;并且易于学习和使用。Robot Framework 提供了丰富的标准库&#xff0c;而 JSONLibrary 就是其中之一&#xff0c;用于处理 JSON 数据。 安装 JSONLibrary 在…...

python 循环解压 解压多重压缩包

在实际数据中&#xff0c;经常会有压缩包套压缩包的情况&#xff0c;并且有可能出现“zip”压缩包下面套“tar”的可能。 你可以运行后面的代码&#xff0c;来完成自动解压。代码会不断检查folder_a_path 文件夹下是否还有压缩包。目前支持zip、rar、tar、7z等四种格式的压缩文…...

[2025CVPR]DeepVideo-R1:基于难度感知回归GRPO的视频强化微调框架详解

突破视频大语言模型推理瓶颈,在多个视频基准上实现SOTA性能 一、核心问题与创新亮点 1.1 GRPO在视频任务中的两大挑战 ​安全措施依赖问题​ GRPO使用min和clip函数限制策略更新幅度,导致: 梯度抑制:当新旧策略差异过大时梯度消失收敛困难:策略无法充分优化# 传统GRPO的梯…...

全球首个30米分辨率湿地数据集(2000—2022)

数据简介 今天我们分享的数据是全球30米分辨率湿地数据集&#xff0c;包含8种湿地亚类&#xff0c;该数据以0.5X0.5的瓦片存储&#xff0c;我们整理了所有属于中国的瓦片名称与其对应省份&#xff0c;方便大家研究使用。 该数据集作为全球首个30米分辨率、覆盖2000–2022年时间…...

论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一)

宇树机器人多姿态起立控制强化学习框架论文解析 论文解读&#xff1a;交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架&#xff08;一&#xff09; 论文解读&#xff1a;交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化…...

汇编常见指令

汇编常见指令 一、数据传送指令 指令功能示例说明MOV数据传送MOV EAX, 10将立即数 10 送入 EAXMOV [EBX], EAX将 EAX 值存入 EBX 指向的内存LEA加载有效地址LEA EAX, [EBX4]将 EBX4 的地址存入 EAX&#xff08;不访问内存&#xff09;XCHG交换数据XCHG EAX, EBX交换 EAX 和 EB…...

均衡后的SNRSINR

本文主要摘自参考文献中的前两篇&#xff0c;相关文献中经常会出现MIMO检测后的SINR不过一直没有找到相关数学推到过程&#xff0c;其中文献[1]中给出了相关原理在此仅做记录。 1. 系统模型 复信道模型 n t n_t nt​ 根发送天线&#xff0c; n r n_r nr​ 根接收天线的 MIMO 系…...

嵌入式学习笔记DAY33(网络编程——TCP)

一、网络架构 C/S &#xff08;client/server 客户端/服务器&#xff09;&#xff1a;由客户端和服务器端两个部分组成。客户端通常是用户使用的应用程序&#xff0c;负责提供用户界面和交互逻辑 &#xff0c;接收用户输入&#xff0c;向服务器发送请求&#xff0c;并展示服务…...

2025年渗透测试面试题总结-腾讯[实习]科恩实验室-安全工程师(题目+回答)

安全领域各种资源&#xff0c;学习文档&#xff0c;以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具&#xff0c;欢迎关注。 目录 腾讯[实习]科恩实验室-安全工程师 一、网络与协议 1. TCP三次握手 2. SYN扫描原理 3. HTTPS证书机制 二…...

OD 算法题 B卷【正整数到Excel编号之间的转换】

文章目录 正整数到Excel编号之间的转换 正整数到Excel编号之间的转换 excel的列编号是这样的&#xff1a;a b c … z aa ab ac… az ba bb bc…yz za zb zc …zz aaa aab aac…; 分别代表以下的编号1 2 3 … 26 27 28 29… 52 53 54 55… 676 677 678 679 … 702 703 704 705;…...

破解路内监管盲区:免布线低位视频桩重塑停车管理新标准

城市路内停车管理常因行道树遮挡、高位设备盲区等问题&#xff0c;导致车牌识别率低、逃费率高&#xff0c;传统模式在复杂路段束手无策。免布线低位视频桩凭借超低视角部署与智能算法&#xff0c;正成为破局关键。该设备安装于车位侧方0.5-0.7米高度&#xff0c;直接规避树枝遮…...

React从基础入门到高级实战:React 实战项目 - 项目五:微前端与模块化架构

React 实战项目&#xff1a;微前端与模块化架构 欢迎来到 React 开发教程专栏 的第 30 篇&#xff01;在前 29 篇文章中&#xff0c;我们从 React 的基础概念逐步深入到高级技巧&#xff0c;涵盖了组件设计、状态管理、路由配置、性能优化和企业级应用等核心内容。这一次&…...