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

这里写目录标题

  • 常用的集合
    • Vector
      • 使用vector存储多个值
      • 创建vector
      • 更新vector
      • 删除vector
      • 读取Vector的元素
      • 所有权与借用规则
        • 在同一个作用域内不能同时存在可变借用和不可变借用
      • 遍历vector中的值
      • 使用vector存储不同类型的数据
  • string类型
    • 字符串
    • String的创建
    • 更新String
    • 对String类型按照索引的形式进行访问
    • 每个unicode标量值占两个字节
    • 以字节、unicode标量、字形簇的方式看待字符串
      • 字节
      • unicode标量值
      • 字形簇(最接近字母)
    • 切割String &字符串名字【0..4】
    • 遍历 参照上面以字节看待字符串等
  • HashMap

常用的集合

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
  • Rust-常用的集合(heap上的)_第1张图片

所有权与借用规则

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

Rust-常用的集合(heap上的)_第2张图片

遍历vector中的值

不可变的引用Rust-常用的集合(heap上的)_第3张图片可变的引用
Rust-常用的集合(heap上的)_第4张图片

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

  • enum的变体可以附加不同类型的数据
  • enum的变体定义在同一个enum类型下
    Rust-常用的集合(heap上的)_第5张图片

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标量、字形簇的方式看待字符串

字节

Rust-常用的集合(heap上的)_第6张图片

unicode标量值

Rust-常用的集合(heap上的)_第7张图片

字形簇(最接近字母)

参照crate::io的网站

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

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

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

HashMap

键值对的形式存储
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
返回值需要显式指明类型
Rust-常用的集合(heap上的)_第8张图片

HashMap和所有权

对于实现了copy接口的类型,值会被复制到hashmap中
对于拥有所有权的类型,值会被移动,所有权会转移给Hashmap
Rust-常用的集合(heap上的)_第9张图片field的两个值失效、
如果将值得引用插入到HashMap,值本身不会移动

访问

Rust-常用的集合(heap上的)_第10张图片

遍历

Rust-常用的集合(heap上的)_第11张图片

更新

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

替代现有得值

插入同样得k,不同得v
Rust-常用的集合(heap上的)_第12张图片

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

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

  • 参数为K
  • 返回enum Entry:代表值是否存在
  • Rust-常用的集合(heap上的)_第13张图片

Rust-常用的集合(heap上的)_第14张图片

基于现有v来更新v

Rust-常用的集合(heap上的)_第15张图片Rust-常用的集合(heap上的)_第16张图片

Hash函数

Rust-常用的集合(heap上的)_第17张图片参考视频

你可能感兴趣的:(rust,python)