rust切片

切片类型写为[T]。
切片是序列的一个片段。
它是动态大小类型,所以要使用切片类型,就必须使用它的指针类型。引用是最常用的指针类型。
[T; n]能隐式转换成[T]。

一、定义切片
(一)不可变切片
&[T],共享切片,是不可变引用。
语法格式如下

let sliced_value: &[type] = &data[x..y]

data是个数组或向量

x..y表示 [x, y) 的数学含义。.. 两边可以没有运算数
..y等价于0..y
x.. 等价于位置x到结束
.. 等价于位置0到结束

(二)可变切片
&mut [T],可变切片,是可变引用。
使用&mut关键字
语法格式

let slice_name: &mut[type] = &mut data[start..end]

data是个数组或向量
例子

fn main(){let mut data = [10,20,30,40,50];use_slice(&mut data[1..4]);// passes references of     20, 30 and 40println!("{:?}",data);
}
fn use_slice(slice:&mut [i32]) {println!("切片的长度为:{:?}",slice.len());println!("{:?}",slice);slice[0] = 1010; // replaces 20 with 1010
}
编译运行结果如下
切片的长度为:3
[20, 30, 40]
[10, 1010, 30, 40, 50]

二、使用切片
(一)获取长度
例子

let mut arr: [u32; 5] = [1, 2, 3, 4, 5];
let a = &mut arr[2..4];
println!("{}", a.len());

(二)访问元素
[]
访问切片内容的时候,下标索引是从 0 开始的。

let mut arr: [u32; 5] = [1, 2, 3, 4, 5];
let a = &mut arr[2..4];
println!("{}", a[0]);

(三)遍历切片
1.使用索引

let mut arr: [u32; 5] = [1, 2, 3, 4, 5];
let a = &mut arr[2..4];
for i in 0..a.len() {a[i] = 0;print!("{} ", a[i]);
}

2.使用引用

let mut arr: [u32; 5] = [1, 2, 3, 4, 5];
let a = &mut arr[2..4];
for i in a {*i = 0;print!("{} ", i);
}

3.使用迭代器

let mut arr: [u32; 5] = [1, 2, 3, 4, 5];
let a = &mut arr[2..4];
for i in a.iter() {print!("{} ", i);
}let mut arr: [u32; 5] = [1, 2, 3, 4, 5];
let a = &mut arr[2..4];
for i in a.iter_mut() {*i = 0;print!("{} ", i);
}

(四)切片作为函数参数
只能通过引用的方式传递给函数。

例子

fn main(){let data = [10,20,30,40,50];use_slice(&data[1..4]);
}
fn use_slice(slice:&[i32]) {println!("length of slice is {:?}",slice.len());println!("{:?}",slice);
}
编译运行结果如下
length of slice is 3
[20, 30, 40]

(五)切片转向量

let mut arr: [u32; 5] = [1, 2, 3, 4, 5];
let a = &mut arr[2..4];
let v = a.to_vec();
println!("{:?}", v);

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

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

相关文章

有效的括号(栈的高频面试题)

一、题目描述 题目连接:有效的括号 给定一个只包括 (,),{,},[,] 的字符串 s ,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。左括号必须以正确的顺…

005-第一代光电小工具(一)

第一代光电小工具(一) 文章目录 第一代光电小工具(一)项目介绍大致原理描述核心控件QCustomPlot关于QCustomPlot 播放音频软件截图 关键字: Qt、 Qml、 QCustomPlot、 曲线、 SQLite 项目介绍 欢迎来到我们的 QML & C 项目!这个项目结合了 QML&…

2024届数字IC设计秋招面经-鼎信

背景 985硕士,计算机科班,实验室做cpu设计和fpga算法加速,我做处理器安全方向,有项目。 投递 8.25 没有笔试,两轮面试,直接通知下周一面试,草草的准备了下。 一面 技术面 9.4 不到半小时 …

MySQL修改时间添加时间自动更新

第一种: database.php设置 false改为true;然后看是使用的什么框架 如果是tp5需要数据库是create_time和update_time字段 laravel的话,需要的是created_at和updated_at字段 如果想自定义的话,就在model文件里加上 protected $createTime create_at;// 默认的字段为create_t…

利用spring写一个反向代理

让spring服务器做为一个反向代理,将一些请求转发给其他的服务来完成响应。实现类似于nginx的功能。 思路: 1、写一个Filter来判断路径来转发符合规则的请求(只转发后端请求且符合特定规则的请求) 2、需要判断后端的服务是否存活 3、转发需要将表单之间的…

Python进阶复习-自带库

目录 random库collection库Counter函数namedtuple函数deque函数 itertools库enumarate函数zip函数product函数 random库 random.random():生成一个 0 到 1 之间的随机浮点数。random.uniform(a, b):生成一个在 a 和 b 之间均匀分布的随机浮点数。random.randint(a, b):生成一个…

LED智能家居灯 开关调光 台灯落地灯控制驱动 降压恒流IC AP5191

产品描述 AP5191是一款PWM工作模式,高效率、外围简单、内置功率MOS管,适用于4.5-150V输入的高精度降压LED恒流驱动芯片。输出最大功率150W,最大电流6A。AP5191可实现线性调光和PWM调光,线性调光脚有效电压范围0.55-2.6V.AP5191 工作频率可以…

sketch for Mac快捷键大全

你可以在sketch中使用键盘快捷键来加快你的设计过程。要使用键盘快捷键,请同时按下下列列表的所有键。有些命令只能根据你在做什么或者你选择了什么才启用,所有把命令分成了下列不同的部分。 sketch下载地址:sketch 破解-Sketch for mac(专业…

# (1462. 课程表 IV leetcode)广搜+拓扑-------------------Java实现

(1462. 课程表 IV leetcode)广搜拓扑-------------------Java实现 题目表述 你总共需要上 numCourses 门课,课程编号依次为 0 到 numCourses-1 。你会得到一个数组 prerequisite ,其中 prerequisites[i] [ai, bi] 表示如果你想…

图书管理系统 数据结构先导课暨C语言大作业复习 | JorbanS

问题描述 读取给定的图书文件book.txt中的信息(book.txt中部分图书信息如下图所示),完成一个图书信息管理系统,该系统的各个功能模块要求利用菜单选项进行选择。 系统功能要求 图书浏览 读取book.txt中的文件信息并依次输出所…

【Unity程序技巧】Unity中的单例模式的运用

👨‍💻个人主页:元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏:Uni…

iptables 防火墙配置

文章目录 iptables 防火墙配置规则链的分类–五链处理的动作iptables 常用参数和作用iptables 防火墙配置查看规则链清空规则链设置默认规则将流入的流量丢弃允许ICMP协议流量通过删除默认策略允许所以流量通过设置将所有流入22端口的流量全部拒绝允许指定网段的22端口通过设置…

学习如何使用最强大的 JavaScript 函数

今天你将学习如何使用**最强大的** JavaScript函数。 数组归约 “Array.reduce是最强大的 JavaScript Function. 时期。 ” reduce有什么作用?为何如此强大? 这是reduce的技术定义...... Array.prototype.reduce() reduce() 方法对数组的每个元素执行(您提供的)reducer 函…

Java键盘录入案例

键盘录入 Java里面有一个类叫Scanner,可以接收键盘输入的数字 第一步:导包,找Scanner这个类 import java.util.Scanner; 导包必须在类定义的上边(public class上面) 第二步:创建对象,开始使用Sc…

selenium学习

selenium模块和爬虫之间的关联 便捷的获取网站中动态加载的数据便捷实现模拟登录 什么是selenium模块 基于浏览器自动化的一个模块 selenium使用流程: - 环境安装:pip install selenium - 下载一个浏览器的驱动程序(谷歌浏览器&#xff…

【数据分享】2000-2022年全球范围500m分辨率类NPP-VIIRS夜间灯光数据

夜间灯光数据是我们在各项研究中经常使用的数据!我们平时使用的夜间灯光数据主要来源于NPP/VIIRS和DMSP/OLS两种渠道,这两种数据由于分辨率、数据年份、传感器等不同存在不兼容的情况限制了长时序夜间灯光数据的使用,针对该问题我们之前分享过…

已解决 Kotlin Error: Type mismatch: inferred type is String but Int was expected

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页: 🐅🐾猫头虎的博客🎐《面试题大全专栏》 🦕 文章图文并茂&#x1f996…

linux在所有文件中查找某一个字符串

linux在所有文件中查找某一个字符串 有时候我们需要在大量文件中查找某一个字符串&#xff0c;手工一个一个打开文件查找非常耗时&#xff0c;我们可以使用 find 和 xargs 两个命令来实现查找指定字符串。 命令详解 find <directory> -type f -name "*.c" |…

【AI视野·今日Robot 机器人论文速览 第三十五期】Mon, 18 Sep 2023

AI视野今日CS.Robotics 机器人学论文速览 Mon, 18 Sep 2023 Totally 44 papers &#x1f449;上期速览✈更多精彩请移步主页 Interesting: &#x1f4da;GelSplitter, 基于近红外与可见光融合实现高精度surfaceNormal重建的触觉传感器。(from 华中科技大学) 基于分光镜的紧凑型…

centos8 install mujoco

一、ubuntu 上安装mujoco $ sudo apt-get install libglfw3 libglew2.0 libgl1-mesa-glx libosmesa6 然后pip install mujoco_py二、centos没有apt install所对应的库 2.1 尝试解决centos8上安装mujoco环境依赖问题 执行python -c "import mujoco_py"时&#xff0…