集合与字符串包含以下三个知识点:向量,字符串,映射表。
下面是这三个字符串的知识点
向量 | 1.向量是什么 1.存放多值的单数据结构,该结构将相同类型的值线性的存放在内存中 线性:在内存中以连续的方式排列 2.向量如何定义 1.声明一个空的向量 let v :Vec<i32> = Vec::new(); //创建类型为i32的空向量 vec:vector 表示动态增长或缩小长度的数组 2.通过数组创建向量 vec = vec![1,2,3,4] //通过数组创建向量 vec:宏的名字 !:告诉rust,这是一个宏调用 [1,2,3,4] 传给宏的参数,传给宏一组数字,宏会帮我们创建一个包含这些数字的向量 3.如何往向量中添加元素 let mut vector = vec![1,2,4,8] vector.push(16) 4.将一个向量拼接到另一个向量的尾部 let mut v1: Vec<i32> = vec![1,2,3,8] let mut v2: Vec<i32> = vec![16,32,64] v1.append(&mut v2); |
5.获取向量中的某个值 1.通过get方法获取 它返回一个option类 let mut v = vec![1,2,3,4,5] println!("{}", match v.get(0)) { Some(third) => println!("This third element is :{}",third), None => println("There is no third element."), } 2.通过索引 let v = vec![1,2,3,4,5]; let third = v[2]; 注意:如果尝试访问一个不存在的索引,程序将会panic并崩溃 | |
字符串 | 1.字符串的类型 1.str:不可变,固定长度的字符串切片,通过以 &str形式出现 2.String:一个可增长的 堆分配的字符串类型。 str:就像一本书的内容,你只读,不可修改,也不能带走(拥有数据) String:就像自己的笔记,可以在上面写字,也可以随意携带 2.字符串字面量 let s = "Hello, world"; 3.创建字符串 1.创建一个空的字符串 let mut s = String::new(); 2.用 to_string() 或 string::from() 将字符串切片转为String let s1 = "Hello".to_string() 4.字符串修改 1.使用push_str() 和 push() 方法向 String 添加文本 let mut s = String::from("Hello") s.push_str(", world!); s.push("!") 2.使用 + 或者 format! 宏来拼接字符串 let s1 = String::from("Hello, "); let s2 = String::from("world!"); let s3 = s1 + &s2 s1被移动:s1的所有权被转移 s2被借用:s2暂时被借用 但是所有权还在 |
5.如何访问字符串中的字符 | |
映射表 | 1.创建hashMap use std::collections::HashMap; let mut map = HashMap::new() 2.向hashMap中插入元素 map.insert(String::from("key1"),10) 3.访问元素 使用get方法通过键来访问值 let value = map.get("key1") 4.更新已存在的元素 1.map.insert(String::from("key1"),20) 2.map.entry(String::from("key1")).and_modify(|e| * e +=1); |e| *e +=1是一个闭包的写法 1.|e|:定义闭包, |e|表示闭包接收一个参数e 在上面例子中,e是一个可变引用,指向hashMap中与特定键关联的值 2. *e: e是一个可变引用,需要使用 * 来访问它指向的实际值 3. *e +=1: 将e指向的值增加1 |
5.如何遍历hashMap |