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…

苍穹外卖--订单状态定时处理

通过定时任务每分钟检查一次是否存在支付超时订单&#xff08;下单后超过15分钟仍未支付则判定为支付超时订单&#xff09;&#xff0c;如果存在则修改订单状态为“已取消”通过定时任务每天凌晨1点检查一次是否存在“派送中”的订单&#xff0c;如果存在则修改订单状态为“已完…

【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() 图像设置边框或者填充

mybatis中<association> 和 <collection>

在 MyBatis 中&#xff0c;<association> 和 <collection> 是用于配置结果映射中关联关系的两个元素。 <association> 用于配置一对一的关联关系&#xff0c;表示两个对象之间的关系是一对一的。例如&#xff0c;一个订单对象关联一个用户对象&#xff0c;使…

大屏适配方案(vw、vh)

开发大屏主要是两方面的工作&#xff1a; 大屏之关键-前期的自适应适配根据 ui 稿绘制图表&#xff0c;调细节 方案实现方式优点缺点vw vh1.按照设计稿的尺寸&#xff0c;将px按比例计算转为vw和vh1.可以动态计算图表的宽高&#xff0c;字体等&#xff0c;灵活性较高 2.当屏幕…

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…

路由器Beacon帧和低功耗设备DTIM之间的关系

1. 路由器发送Beacon帧&#xff1a;路由器周期性地发送Beacon帧&#xff0c;用于广播网络的存在和参数信息。Beacon帧中包含了DTIM周期和DTIM计数器的值。 2. 设备监听Beacon帧&#xff1a;低功耗设备在休眠状态下会定期唤醒来监听路由器发送的Beacon帧。 3. DTIM计数器更新&…

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

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

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

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

halcon中灰度图自动二值化

1、首先图片要先形成灰度图&#xff0c;如果下一句是二值化的那就删掉 dev_clear_window() read_image(Image, D:/desktop/tmpp/微信图片_20231201184731.png) * 转为灰度图 rgb1_to_gray(Image, GrayImage) 2、双击图像变量中的GrayImage 3、工具栏点击打开灰度直方图按钮&…

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

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

开源镜像站

百度&#xff08;需要权限&#xff09;&#xff1a;https://mirror.baidu.com/阿里&#xff1a;https://developer.aliyun.com/mirror/腾讯&#xff1a;https://mirrors.cloud.tencent.com/华为&#xff1a;https://mirrors.huaweicloud.com/home清华&#xff1a;https://mirro…

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

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

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

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

【Paper List】Multi-modal Few-shot Sentiment Analysis

综述 Multimodal Sentiment Analysis: A Survey of Methods, Trends, and Challenges paper link: https://dl.acm.org/doi/abs/10.1145/3586075 2023 Few-shot Multimodal Sentiment Analysis Based on Multimodal Probabilistic Fusion Prompts paper link: https://dl.ac…

分析Pun老师的论文

Combating copycatting from emerging market suppliers in global supply chains 疯狂看潘老师的论文&#xff0c;感觉找论文的方向好难啊&#xff0c;好做的别人都做了&#xff0c;不好做的&#xff0c;你又没想法能做。 这篇文章就是讲保护全球制造商免受新兴市场普遍存在的…

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…