Rust-常用的集合(heap上的)

常用的集合

Vector

使用vector存储多个值

vector 叫做vector

  • 内存连续

创建vector

  • Vector::new 函数
  • 使用初始值创建Vec 使用vec! 宏
let v:Vec<i32>=Vec::new();
let v =vec![1,2,3];

更新vector

向vector中添加元素,使用push方法

let mut v=Vec::new();
    v.push(1);

删除vector

出了作用域自动清理

读取Vector的元素

两种方式可以读取vector中的值:

  • 索引
  • get方法
  • 如果索引超出范围, 使用索引会报错,使用match,会返回null
  • 索引:panic
  • get:返回none
  • 在这里插入图片描述

所有权与借用规则

在同一个作用域内不能同时存在可变借用和不可变借用

在这里插入图片描述

遍历vector中的值

不可变的引用在这里插入图片描述可变的引用
在这里插入图片描述

使用vector存储不同类型的数据

  • enum的变体可以附加不同类型的数据
  • enum的变体定义在同一个enum类型下
    在这里插入图片描述

string类型

rust使用utf-8的编码

字符串

  • byte的集合
  • rust的核心语言层面,只有一个字符串类型:字符串切片str(或者&str)
  • 字符串切片: 对存储在其他地方、utf-8编码的字符串的引用
  • 字符串字面值:存储在二进制文件中,也是字符串切片

String的创建

String::new函数
使用初始值来创建String:

  • to_string()方法 可用于实现了Display trait的类型,包括字符串字面值
  • string::from

更新String

  • push_str(),把一个字符串切片附加到String
  • push()方法 :把单个字符附加到String
    • 连接字符串(相当于使用了函数调用),要使用&str
  • format! 连接多个字符串
  •    format!("{}-{}-{}",s1,s2,s3)
    
  •   返回的是字符串
    
  •   不会取得参数的所有权
    

对String类型按照索引的形式进行访问

不支持

每个unicode标量值占两个字节

以字节、unicode标量、字形簇的方式看待字符串

字节

在这里插入图片描述

unicode标量值

在这里插入图片描述

字形簇(最接近字母)

参照crate::io的网站

切割String &字符串名字【0…4】

要按照char的边界进行切割 否则报错

遍历 参照上面以字节看待字符串等

HashMap<K,V>

键值对的形式存储
hash 函数
适用于通过k寻找值

创建

创建空的:new()函数
添加数据: insert()函数

use std::collections::HashMap;

fn main() {

    //第一种,显示说明类型
    let mut scores:HashMap<String,i32>=HashMap::new();

    //第二种,添加数据
    let mut Scores=HashMap::new();
    Scores.insert(String::from("wanghgdfsjh"), 33333333);
}

特点

数据存储在heap
同构

collect方法创建

在元素类型tuple的vector上使用collect方法,可以组建一个hashmap
要求tuple有两个值,一个作为k,一个作为v
collect方法可以把数据整合成很多种集合类型,包括hashmap
返回值需要显式指明类型
在这里插入图片描述

HashMap和所有权

对于实现了copy接口的类型,值会被复制到hashmap中
对于拥有所有权的类型,值会被移动,所有权会转移给Hashmap
在这里插入图片描述field的两个值失效、
如果将值得引用插入到HashMap,值本身不会移动

访问

在这里插入图片描述

遍历

在这里插入图片描述

更新

  • HashMap大小可变
  • 每个k只能对应一个v

替代现有得值

插入同样得k,不同得v
在这里插入图片描述

只有不存在k时,才插入v

entry方法:检查指得k是否对应一个v

  • 参数为K
  • 返回enum Entry:代表值是否存在
  • 在这里插入图片描述

在这里插入图片描述

基于现有v来更新v

在这里插入图片描述在这里插入图片描述

Hash函数

在这里插入图片描述参考视频

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值