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

java web是做网站的吗网站设计就业

java web是做网站的吗,网站设计就业,商业网站开发实训报告,找程序员做网站Rust 数据结构:Vector Rust 数据结构:Vector创建数组更新数组插入元素删除元素 获取数组中的元素迭代数组中的值使用枚举存储多个类型删除一个数组会删除它的元素 Rust 数据结构:Vector vector 来自标准库,在内存中连续存储相同类…

Rust 数据结构:Vector

  • Rust 数据结构:Vector
    • 创建数组
    • 更新数组
      • 插入元素
      • 删除元素
    • 获取数组中的元素
    • 迭代数组中的值
    • 使用枚举存储多个类型
    • 删除一个数组会删除它的元素

Rust 数据结构:Vector

vector 来自标准库,在内存中连续存储相同类型的多个值。

创建数组

要创建一个新的空 vector,调用 Vec::new 函数,并指名类型。

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

Rust 方便地提供了 vec! 宏,它创建具有初始值的Vec<T>,无需类型注释。

let v = vec![1, 2, 3];

整数类型是 i32,因为这是默认的整数类型,Rust可以推断出 v 的类型是 Vec<i32>。

更新数组

插入元素

要创建一个 vector 并向其中添加元素,可以使用 push 方法。

    let mut v = Vec::new();v.push(5);v.push(6);v.push(7);v.push(8);

与任何变量一样,如果我们希望能够改变它的值,我们需要使用 mut 关键字使其可变。

我们放在里面的数字都是 i32 类型的,Rust 从数据中推断出这一点,所以我们不需要 Vec<i32> 注释。

删除元素

pop 方法删除并返回最后一个元素。

获取数组中的元素

有两种方法可以引用存储在 vector 中的值:通过索引或使用 get 方法。

    let v = vec![1, 2, 3, 4, 5];let third: &i32 = &v[2];println!("The third element is {third}");let third: Option<&i32> = v.get(2);match third {Some(third) => println!("The third element is {third}"),None => println!("There is no third element."),}

使用 & 和 [] 为我们提供了对索引值处元素的引用。当使用 get 方法将索引作为参数传递时,会得到一个 Option<&T>,可以与 match 一起使用。

注意,索引值不能超出现有元素范围。如果直接访问超出范围的元素,程序会报错。当 get 方法被传递给向量之外的索引时,它会返回 None 而不会报错。

当程序有一个有效的引用时,借阅检查器执行所有权和借阅规则,以确保这个引用和对vector内容的任何其他引用保持有效。回想一下在同一作用域中不能有可变引用和不可变引用的规则。该规则适用于下面的示例:

    let mut v = vec![1, 2, 3, 4, 5];let first = &v[0];v.push(6);println!("The first element is: {first}");

我们保存了一个指向 vector 中第一个元素的不可变引用,并尝试在末尾添加一个元素。如果我们稍后还试图在函数中引用该元素,则该程序将无法工作。

为什么对第一个元素的引用要关心 vector 末尾的变化?这个错误是由于 vector 的工作方式造成的:因为 vector 将值放在内存中相邻的位置,如果没有足够的空间将 vector 当前存储的所有元素放在相邻的位置,则在 vector 的末尾添加新元素可能需要分配新的内存并将旧元素复制到新的空间中。在这种情况下,对第一个元素的引用将指向已释放的内存。同一作用域中不能有可变引用和不可变引用的规则防止了这种情况。

迭代数组中的值

使用 for 循环可以遍历所有元素,而不是一次使用索引访问一个元素。

    let v = vec![100, 32, 57];for i in &v {println!("{i}");}

还可以遍历对可变向量中每个元素的可变引用,以便对所有元素进行修改。

    let mut v = vec![100, 32, 57];for i in &mut v {*i += 50;}

要更改可变引用所引用的值,必须先使用 * 解引用操作符获 取i 中的值,然后才能使用 += 操作符。

由于借用检查器的规则,对 vector 进行迭代(无论是不可变还是可变)都是安全的。如果试图在 for 循环体中插入或删除项,就会报错。

使用枚举存储多个类型

vector 只能存储相同类型的值。这可能很不方便。我们可以定义一个枚举,它的变体将保存不同的值类型,所有的枚举变体将被认为是相同的类型:枚举的类型。然后,可以创建一个 vector 容器来保存枚举,从而最终保存不同的类型。

    enum SpreadsheetCell {Int(i32),Float(f64),Text(String),}let row = vec![SpreadsheetCell::Int(3),SpreadsheetCell::Text(String::from("blue")),SpreadsheetCell::Float(10.12),];

删除一个数组会删除它的元素

当 vector 超出作用域时,它将被释放。

当 vector 被删除时,它的所有内容也被删除,这意味着它保存的整数将被清理。借用检查器确保仅在 vector 本身有效时才使用对 vector 内容的任何引用。

http://www.dtcms.com/wzjs/366027.html

相关文章:

  • 食品建设网站郑州百度推广公司电话
  • 做我韩国连续剧网站搭建网站费用是多少
  • 网站上的定位怎么做搜索引擎技术包括哪些
  • 鞍山晟宇网站建设长春网站制作计划
  • 网站建设试用个人开发app去哪里接广告
  • 网站改版优化电商网店
  • 营销型网站免费企业网站模版云速seo百度点击
  • 手机购物网站开发教程建网站赚钱
  • 广州网站建设与网页设计开通网站需要多少钱
  • itmc电子商务网店运营推广seo中文含义是什么
  • 帝国cms建网站腾讯控股第三季度营收1401亿
  • 企业网站底部建网站平台
  • 好的建筑设计公司seo是做什么的
  • 网站的建设背景图片seo的基本内容
  • 进入网站后台如何操作西安竞价托管公司
  • 动态网站通讯录怎么做整站排名优化品牌
  • 网站的关键词库怎么做seo查询百科
  • 禁止网站收录千锋教育培训机构学费
  • 台州网站建设网站推广b站怎么推广自己的视频
  • 怎么做类似知乎的网站白帽seo是什么
  • php网站开发技术期末题库哪个推广网站好
  • 做网站的成功案例seo蜘蛛屯
  • 排版设计模板网站精准引流推广团队
  • 2017年内蒙古建设厅网站百度竞价点击神器奔奔
  • dede网站地图html如何制作自己的链接
  • 佛山宽屏网站建设宁波网站排名优化seo
  • 网站全屏广告seo推广策划
  • 西安模板建网站企业网站优化推广
  • 石家庄模板建站行业解决方案电脑零基础培训学校
  • 做推广优化的网站有哪些营销网站模板