rust中动态数组Vec的简单使用

在Rust中,Vector(简称Vec)是一个动态数组数据结构,它可以动态地增加或减少其容量。Vec是Rust标准库中的一个常见类型,非常适合用于存储和操作一系列相同类型的值。 Vec其实是一个智能指针,用于在上分配内存的动态数组。它提供了一些方法来操作数组,如添加、删除和访问元素。与C或Python中的数组不同,Vec会自动处理内存分配和释放,从而避免了常见的内存泄漏和悬挂指针错误。用法跟C++的vector相似。

创建

Vec::new()方法

只创建一个空列表时,必须要标注类型,否则无法成功编译。

let a:Vec<i32> = Vec::new();

vec!

显示的给vec进行赋值。

let a = vec![1,2,3,4];

同时,Vec支持创建多个相同的值。vec![val ; len],创建len个元素,且值为val

let a = vec![9, 10000]; // 创建10000个元素,值均为9

下标访问

与正常数组相同:

    let a = vec![1,2,3,4];for i in 0..4 {println!("{}", a[i]);}

使用迭代器进行访问:

    let a = vec![1,2,3,4];for v in a.iter() {println!("{}", v);}

数组切片

数组切片允许我们引用数组的一部分,创建切片的代价非常小,因为切片只是针对底层数组的一个引用。

    let a = vec![1,2,3,4];let slc = &a[0..3];println!("{:?}", slc);

只切片一个元素,并对该元素进行赋值:

    let mut a = vec![1,2,3,4];let slc = &mut a[0];*slc = 3333;println!("{}", slc);

pushpop方法

push用于将一个元素添加到vec的尾部。

pop用于将vec尾部元素删除,并返回删除的那个值。!

    let mut a = vec![1,2,3,4];a.push(3);println!("{:?}", a);let b = a.pop().unwrap();println!("{}", b);

image-20231201214412796

pop删除后返回的是Option<T>类型,因此需要用unwrap或者expect获取pop的返回值并返回。

len方法

使用len方法得到vec的长度。

    let mut a = vec![1,2,3,4];println!("{}", a.len());

clear方法

vec进行清空。

    let mut a = vec![1,2,3,4];a.clear();println!("{}", a.len());

动态数组Vec可以用pushpop模拟数据结构-栈。

在算法竞赛中,经常要读入一行n个数的数据等。在python中,有这样方便读入的方法:

# 读取n,m,再读取n个数,m行
n, m = (int(_) for _ in input().strip().split(" "))
a = [int(_) for _ in input().strip().split(" ")]

在rust中也有类似的方法,感觉跟python好像:

    let numbers: Vec<i32> = input.trim().split_whitespace().map(|n| n.parse().unwrap()).collect();
  • trim()方法用于去除字符串两端的空格或换行符等空白字符。这么做是为了确保输入的字符串的末尾没有任何空白字符。

  • split_whitespace():这个方法将字符串按照空白字符进行分割,并返回一个迭代器。每个分割出来的部分都将作为迭代器的一个元素。

  • map(|n| n.parse().unwrap()):这里使用map方法对每个分割出来的部分进行操作。parse()方法将字符串解析为特定类型的值,这里解析为i32类型。unwrap()方法用于解包parse()方法的返回值,将解析成功的结果取出。

  • collect():最后,collect()方法将迭代器中的值收集到一个Vec<i32>类型的向量中。

[Rust 数组-CSDN博客](https://blog.csdn.net/mr1jie/article/details/125342195?ops_request_misc=%7B%22request%5Fid%22%3A%22170143620116800182119361%22%2C%22scm%22%3A%2220140713.130102334.pc%5Fall.%22%7D&request_id=170143620116800182119361&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allfirst_rank_ecpm_v1~rank_v31_ecpm-8-125342195-null-null.142v96pc_search_result_base3&utm_term=rust vector数组&spm=1018.2226.3001.4187)

[Rust 动态数组Vec基本概念及其用法_rust vec_Hann Yang的博客-CSDN博客](https://blog.csdn.net/boysoft2002/article/details/131145658?ops_request_misc=%7B%22request%5Fid%22%3A%22170143620116800227472163%22%2C%22scm%22%3A%2220140713.130102334…%22%7D&request_id=170143620116800227472163&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduend~default-1-131145658-null-null.142v96pc_search_result_base3&utm_term=rust vector数组&spm=1018.2226.3001.4187)

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

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

相关文章

2022年1月14日 Go生态洞察:Go 1.18 新教程探索

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

绩效考核管理项目|记录2

给界面添加筛选条件并且把搜索功能实现 这段代码写入搜索方法里面就能实现功能。 private void bingdgv(){//筛选项&#xff1a;用户名、职位代码、是否辞职string userName txtUserName.Text.Trim();int baseTypeId (int)base_cbx.SelectedValue;bool isStop isdel_ckb.Che…

【VMware相关】VMware vSphere存储方案

一、iSCSI存储 参考文档 VMware官方文档&#xff1a;配置iSCSI适配器和存储 华为配置指南&#xff1a;VMware ESXi下的主机连通性指南 1、配置说明 如下图所示&#xff0c;VMware配置iSCSI存储&#xff0c;需要将物理网卡绑定到VMKernel适配器上&#xff0c;之后再将VMKernel适…

Golang数据类型(数字型)

Go数据类型&#xff08;数字型&#xff09; Go中数字型数据类型大致分为整数&#xff08;integer&#xff09;、浮点数&#xff08;floating point &#xff09;和复数&#xff08;Complex&#xff09;三种 整数重要概念 整数在Go和Python中有较大区别&#xff0c;主要体现在…

opencv 图像边框

cv.copyMakeBorder() 图像设置边框或者填充

PyQt基础_012_对话框类控件QInputDialog

基本操作 import sys from PyQt5.QtCore import * from PyQt5.QtGui import * from PyQt5.QtWidgets import *class InputdialogDemo(QWidget):def __init__(self, parentNone):super(InputdialogDemo, self).__init__(parent)layout QFormLayout()self.btn1 QPushButton(&qu…

springboot+java校园自助洗衣机预约系统的分析与设计ssm+jsp

洗衣服是每个人都必须做的事情&#xff0c;而洗衣机更成为了人们常见的电器&#xff0c;但是单个洗衣机价格不菲&#xff0c;如果每人都买&#xff0c;就会造成资源的冗余。所有就出现了公用设备&#xff0c;随着时代的发展&#xff0c;很多公用都开始向着无人看守的自助模式经…

如何访问电脑的组策略编辑器?

如何打开组策略 如果我们使用的是 Win 10 系统&#xff0c;如何打开组策略&#xff1f;下面为大家总结了四种打开组策略编辑器的方法。 从搜索框打开 Win 10 策略组怎么打开&#xff1f;一个简单快速的方法就是使用 Windows 自带的搜索栏。我们可以向搜索框中输入“编辑组策…

【数电笔记】基本和复合逻辑运算

说明&#xff1a; 笔记配套视频来源&#xff1a;B站 基本逻辑运算 1. 与运算 &#xff08;and gate&#xff09; 2. 或运算 &#xff08;or gate&#xff09; 3. 非运算 &#xff08;not gate &#xff09; 复合逻辑运算 1. 与非运算&#xff08;nand&#xff09; 2. 或非运…

【动手学深度学习】(七)丢弃法

文章目录 一、理论知识二、代码实现2.1从零开始实现Dropout 【相关总结】np.random.uniform(low&#xff0c;high&#xff0c;size)astypetorch.rand() 一、理论知识 1.动机 一个好的模型需要对输入数据的扰动鲁棒 使用有噪音的数据等价于Tikhonov正则丢弃法&#xff1a;在层…

vivado实现分析与收敛技巧3-面向非工程用户的智能设计运行建议

要使用智能设计运行功能特性 &#xff0c; 需要 Vivado 工程。这是因为需要进行运行管理。以下指示信息解释了创建综合后工程的最简单方法。这些信息适用于以下流程的用户&#xff1a; • 非工程实现运行 • 使用较低版本的 Vivado 或第三方综合工具进行综合 访问智能设计…

MvLNet

表1 Noisy MNIST–ACC&#xff1a;0.678&#xff0c;F-mea&#xff1a;0.6691&#xff0c;NMI&#xff1a;0.6632&#xff0c;AMI&#xff1a;0.6626 Caltech101-20–ACC&#xff1a;0.3521&#xff0c;F-mea&#xff1a;0.2535&#xff0c;NMI&#xff1a;0.4968&#xff0c;A…

你好!插值查找【JAVA】

1.初次相识 插值查找&#xff08;interpolation search&#xff09;是一种根据待查找关键字在有序数组中的大致位置决定查找范围的查找算法。插值查找与二分查找类似&#xff0c;区别在于插值查找对于待查找关键字在数组中的位置进行估计&#xff0c;从而更精准地定位到待查找关…

SpringBoot+mysql+vue实现大学生健康档案管理系统前后端分离

一、项目简介 本项目是一套基于SpringBoot实现大学生健康档案管理系统&#xff0c;主要针对计算机相关专业的正在做bishe的学生和需要项目实战练习的Java学习者。 包含&#xff1a;项目源码、数据库脚本等&#xff0c;该项目可以直接作为bishe使用。 项目都经过严格调试&#…

Android Studio新版UI介绍

顶部菜单栏 左侧主要菜单入口项目名称分支名称 展开之后&#xff0c;主要功能与原来菜单栏功能一样&#xff0c;最大的变化就是把setting独立出去了。 而项目名称这里&#xff0c;展开就可以看到打开的历史工程列表&#xff0c;可以直接新建工程&#xff0c;原来需要在项目名称…

git的相关实用命令

参看文章&#xff1a;https://blog.csdn.net/qq_21688871/article/details/130158888 http://www.mobiletrain.org/about/BBS/159885.html 1、git commit后&#xff0c;但发现文件有误&#xff0c;不想push(提交到本地库&#xff0c;回退到暂存区&#xff09; git reset --sof…

locked1勒索病毒,刚攻击完海康威视系统,又再针对速达软件服务器攻击

导言&#xff1a; .locked、.locked1勒索病毒正成为数字安全的一大威胁。本文91数据恢复将深入介绍.locked、.locked1勒索病毒的特点、如何有效恢复被其加密的数据文件&#xff0c;以及预防这一数字噩梦的方法。如果您正在经历勒索病毒数据恢复的困境&#xff0c;我们愿意与您…

漏刻有时百度地图API实战开发(7)个性化地图加载瓦片空白和Echarts加载bmap元素跟踪重影

一、地图瓦片加载缓慢或者空白 在使用百度个性化地图时&#xff0c;出现地图瓦片加载缓慢或者空白 解决方案 1.替换百度地图API引入方式 <script type"text/javascript" src"https://api.map.baidu.com/api?v3.0&akI2428Rc4FDz00LSGUYfISLcbPsxOfjx…

.NET 8 发布!

作者&#xff1a;Gaurav Seth 排版&#xff1a;Alan Wang 请立即下载 .NET 8&#xff01; 我们很高兴地宣布从今天开始 .NET 8 正式发布&#xff0c;它是世界领先的开发平台之一的最新 LTS 版本。.NET 8 提供了数以千计的性能、稳定性和安全性改进&#xff0c;以及平台和工具增…

中学老师求职简历(精选9篇)

以下简历内容以中学老师招聘需求为背景&#xff0c;我们整理并修改了9篇全面、专业且具有参考价值的简历案例&#xff0c;大家可以灵活借鉴&#xff0c;希望能帮助大家在众多候选人中脱颖而出。 中学老师简历下载&#xff08;可在下制作下载&#xff09;&#xff1a;百度幻主简…