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

第6篇:数据容器——管理大量数据 Rust中文编程

第6篇:数据容器——管理大量数据

作者:李金雨
联系方式:wbtm2718@qq.com
目标读者:Rust中文编程
核心理念:AI时代必须使用中文编程,母语编程阅读效率极高


1. 开篇引入

本课目标

  • 掌握固定数据盒(数组)的使用
  • 掌握可增数据盒(向量)的使用
  • 掌握元组的使用
  • 理解不同数据容器的特点和用途

生活场景引入

想象一下,你有一个抽屉,里面有很多不同类型的盒子:

  • 一个固定大小的盒子,用来放铅笔,只能放5支
  • 一个可以伸缩的盒子,用来放橡皮,可以放很多
  • 一个特殊的盒子,用来放不同类型的东西,比如一支铅笔、一块橡皮和一把尺子

在编程中,我们也有类似的容器来管理大量数据,它们就是数组、向量和元组。

预期成果展示

通过这节课的学习,你将能够:

  • 创建和使用固定大小的数组
  • 创建和使用可伸缩的向量
  • 创建和使用元组
  • 根据不同的需求选择合适的数据容器
  • 编写能够管理大量数据的程序

2. 概念讲解

固定数据盒(数组)

数组就像一个固定大小的盒子,一旦创建,大小就不能改变。

fnmain(){// 创建一个包含5个整数的数组let数字们=[1,2,3,4,5];// 创建一个包含3个字符串的数组let名字们=["张三","李四","王五"];// 创建一个包含10个0的数组let零们=[0;10];}

访问数组元素:

fnmain(){let数字们=[1,2,3,4,5];// 访问第一个元素(索引从0开始)let第一个=数字们[0];println!("第一个元素:{}",第一个);// 访问第三个元素let第三个=数字们[2];println!("第三个元素:{}",第三个);}

修改数组元素(需要使用mut):

fnmain(){letmut数字们=[1,2,3,4,5];// 修改第二个元素数字们[1]=10;println!("修改后的数组:{:?}",数字们);}

可增数据盒(向量)

向量就像一个可以伸缩的盒子,可以根据需要添加或删除元素。

fnmain(){// 创建一个空向量letmut数字们=Vec::new();// 创建一个包含初始值的向量letmut名字们=vec!["张三","李四","王五"];}

添加元素:

fnmain(){letmut数字们=Vec::new();// 添加元素数字们.push(1);数字们.push(2);数字们.push(3);println!("向量内容:{:?}",数字们);}

删除元素:

fnmain(){letmut数字们=vec![1,2,3,4,5];// 移除最后一个元素数字们.pop();println!("移除最后一个元素后:{:?}",数字们);// 移除指定位置的元素数字们.remove(0);println!("移除第一个元素后:{:?}",数字们);}

访问元素:

fnmain(){let数字们=vec![1,2,3,4,5];// 访问第一个元素let第一个=数字们[0];println!("第一个元素:{}",第一个);// 使用get方法访问元素(更安全)ifletSome(第三个)=数字们.get(2){println!("第三个元素:{}",第三个);}}

向量的方法:

fnmain(){letmut数字们=vec![1,2,3,4,5];// 获取长度println!("长度:{}",数字们.len());// 检查是否为空println!("是否为空:{}",数字们.is_empty());// 清空向量数字们.clear();println!("清空后:{:?}",数字们);}

元组(Tuple)

元组就像一个特殊的盒子,可以放不同类型的东西。

fnmain(){// 创建一个元组let个人信息=("张三",15,1.75);// 创建一个包含不同类型的元组let混合=(1,"你好",true,3.14);}

访问元组元素:

fnmain(){let个人信息=("张三",15,1.75);// 通过索引访问let姓名=个人信息.0;let年龄=个人信息.1;let身高=个人信息.2;println!("姓名:{}",姓名);println!("年龄:{}岁",年龄);println!("身高:{}米",身高);}

元组的用途:

  • 函数返回多个值
  • 临时组合不同类型的数据
  • 作为函数参数传递多个值
fnmain(){// 函数返回多个值fn计算(a:i32,b:i32)->(i32,i32,i32){(a+b,a-b,a*b)}let(,,)=计算(5,3);println!("和:{},差:{},积:{}",,,);}

3. 动手实践

基础练习(必做)

  1. 班级成绩管理系统:创建一个程序,使用数组存储班级成绩:
    fnmain(){let成绩们=[95,88,92,76,85];letmut总分=0;println!("班级成绩:");for(索引,成绩)in成绩们.iter().enumerate(){println!("第{}名:{}分",索引+1,成绩);总分+=成绩;}let平均分=总分asf64/成绩们.len()asf64;println!("总分:{}分",总分);println!("平均分:{}分",平均分);}
  2. 简易通讯录:创建一个程序,使用向量存储联系人信息:
    fnmain(){letmut联系人=vec![("张三","13812345678"),("李四","13987654321"),("王五","13712345678")];println!("通讯录:");for(姓名,电话)in&联系人{println!("{}:{}",姓名,电话);}// 添加新联系人联系人.push(("赵六","13612345678"));println!("\n添加新联系人后:");for(姓名,电话)in&联系人{println!("{}:{}",姓名,电话);}}
  3. 购物车程序:创建一个程序,使用向量管理购物车:
    fnmain(){letmut购物车=vec![("苹果",5.5),("香蕉",3.0),("橙子",4.5)];println!("购物车:");letmut总价=0.0;for(商品,价格)in&购物车{println!("{}:{}元",商品,价格);总价+=价格;}println!("总价:{}元",总价);// 添加商品购物车.push(("梨",4.0));println!("\n添加梨后:");总价=0.0;for(商品,价格)in&购物车{println!("{}:{}元",商品,价格);总价+=价格;}println!("总价:{}元",总价);}

进阶练习(选做)

  1. 单词本程序:创建一个程序,使用向量存储单词和释义:
    fnmain(){letmut单词本=vec![("apple","苹果"),("banana","香蕉"),("orange","橙子")];println!("单词本:");for(单词,释义)in&单词本{println!("{}:{}",单词,释义);}// 添加新单词单词本.push(("pear","梨"));println!("\n添加新单词后:");for(单词,释义)in&单词本{println!("{}:{}",单词,释义);}}
  2. 坐标管理:创建一个程序,使用元组存储坐标:
    fnmain(){let点一=(1,2);let点二=(3,4);println!("点一:({},{})

学习交流

如果你在学习过程中遇到任何问题,欢迎联系我:

  • ** 视频号,“时空系”
  • 邮箱:wbtm2718@qq.com
  • 其他提示:
  • 本人正在开发纯中文编程语言和编译器,有兴趣的可以交流
  • 本人正在写一本基于中国母语思维习惯的数学教材,可以让你一年内学完从初中到研究生的数学,而且可以让你快速掌握人工智能的关键数学知识,有兴趣的可以交流

祝你学习愉快!

http://www.jsqmd.com/news/740871/

相关文章:

  • 告别乱码和字段截断:用Python脚本批量修复SHP文件的编码和CPG文件
  • 39.ROUND / FLOOR / CEIL 函数深度解析
  • 站立式个人飞剑 - 每日详细制作步骤(第3周)
  • Pytorch图像去噪实战(二十三):高清大图分块去噪推理,解决显存爆炸和边缘接缝问题
  • 一次深夜告警复盘:我们是如何用pg_basebackup + 归档搞定PostgreSQL备库WAL丢失的
  • Graphify-DotNet:AI 驱动的 .NET 代码知识图谱构建工具
  • 终极指南:如何让魔兽争霸3在现代电脑上焕发新生
  • 千问 LeetCode 2009.使数组连续的最少操作数 Python3实现
  • [具身智能-538]:人类:硅基世界的 “建设者”,还是 “打工人”?
  • Windows 一键安装 OpenClaw 教程 零代码无命令部署
  • 链下数据索引工具sub-bridge:构建可靠链上事件监听与处理管道
  • 5分钟彻底美化你的VLC播放器:5款VeLoCity皮肤终极指南
  • 2. BundleSDF的虚拟环境搭建
  • 告别机械电位器!用STM32和MCP4017打造你的智能亮度调节模块(教程+源码)
  • 115proxy-for-kodi:在Kodi中实现115网盘视频流式播放的技术实现
  • 通过 curl 命令直接测试 Taotoken 聊天补全接口的完整步骤
  • 别再傻傻改元组了!Python新手必懂的3种‘不可变’数据替换技巧(附代码对比)
  • 告别虚拟机卡顿:实测2015款iMac用Rufus直装Win11双系统,驱动与5K分辨率完美设置指南
  • Java String 类深入解析
  • 如何快速成为斗地主高手:DouZero AI助手完整使用指南
  • 从零搭建GPU监控看板:用Python脚本+nvidia-smi定时抓取数据并可视化
  • 从色卡到代码:手把手教你用Python实现CIE 1931色度图转换(附完整代码)
  • 告别symbolicatecrash:Xcode 13.3后,用atos和CrashSymbolicator.py高效解析iOS崩溃日志
  • DBA不会告诉你的事:90%性能问题源于这5个SQL错误
  • 多平台内容矩阵分发系统 核心模块技术实现与技术选型详解
  • 深入RTA-OS内核:手把手教你配置ETAS ISOLAR多核工程的中断(Category1 vs Category2详解)
  • 从用量看板观察不同模型调用的 token 消耗与成本分布
  • 1 7.4.4 PPPoE 上网配置(拨号 → 新连接 → 宽带 PPPoE)
  • 3分钟上手:N_m3u8DL-CLI-SimpleG视频下载终极指南
  • Python分布式训练配置终极检查表(含NCCL_TIMEOUT、TF_CPP_MIN_LOG_LEVEL、RANK/WORLD_SIZE等11个关键环境变量避雷解析)