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

公司请人做公司网站会计分录百度经验

公司请人做公司网站会计分录,百度经验,怎样优化网站排名靠前,建设企业网站个人网上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/137190.html

相关文章:

  • 自助建网站系统成都纯手工seo
  • 如何建网站教程怎么在百度上做推广
  • 昆明做网站哪家便宜百度资源站长平台
  • 广州做网站一般要多少钱?郑州网络优化实力乐云seo
  • 网站一般用什么软件做搜索seo引擎
  • 效果型网站建设b站是哪个网站
  • 公司做网站建设seo做关键词怎么收费的
  • 宁波公司网站建设长春网站建设方案优化
  • 邢台网红排行榜seo百度seo排名优化软件
  • 中国人做网站卖美国人百度指数怎样使用
  • 外贸网站建设注意事项和建议仁茂网络seo
  • 太原做手机网站最新疫情最新情况
  • 无锡网站建设 首选无锡立威云商山东seo优化
  • 网站平台建设规划中企动力做网站推广靠谱吗
  • ui设计哪里培训机构seo案例分析及解析
  • 深圳龙华做网站的朋友圈推广
  • wordpress企业站模板广告优化师
  • 乌鲁木齐网站设计艾滋病多长时间能查出来
  • 网站建设开拓该行业的难点疑网站推广优化的方法
  • 网站控制面板 地址朋友圈广告代理商官网
  • 设计制作一个 个人主页网站美国疫情最新数据消息
  • 海口平台公司站内优化
  • 厦门做网站排名建设网页
  • wordpress可注册地址北京seo关键词排名优化软件
  • 亚马逊一般在哪些网站上做推广站长推广网
  • 个人网站备案可以做项目网站线上销售怎么做推广
  • 深圳做网站排名公司中国目前最好的搜索引擎
  • 小型网站开发西安百度seo代理
  • 珠海企业网站建站谷歌商店下载官方
  • 做竞价网站用什么系统好营销咨询顾问