当前位置:   article > 正文

Rust语言——常用的集合_rust语言 集合

rust语言 集合
  • Vector

Vec<T>,叫做vector:可以存储多个值

1.vector由标准库提供

2.可以储存多个值

3.只能存储相同类型的数据

4.值在内存中连续存放

创建vector

Vec::new 函数

  1. fn main(){
  2. let vec1:Vec<i32> = Vec::new();//方法一
  3. let vec2 = vec![1, 2, 3];//方法二 宏
  4. println!("{}", vec2[0]);
  5. }

更新vector: push

  1. fn main(){
  2. //let v = vec![1, 2, 3];
  3. let mut v = Vec::new();//创建空vector
  4. v.push(1);
  5. for i in v{
  6. println!("{}", i);
  7. }
  8. }
  1. fn main(){
  2. let mut v = vec![1, 2, 3];
  3. v.push(42);
  4. println!("{}", v[3]);//42
  5. }
  1. fn main(){
  2. let mut v = vec![1, 2, 3];
  3. for i in &mut v{
  4. *i += 50;
  5. println!("{}", i);//51 52 53
  6. }
  7. for i in v{
  8. println!("{}", i);//51 52 53
  9. }
  10. }

为了使vector能存放不同数据类型可以配合enum使用

  • String

String::new() —— 创建空String类型变量

a.to_string() —— 将字符串切片、字符串字面值转换成String类型 

String::from() —— 创建String类型

push_str() —— 把一个字符串切片附加到String

  1. fn main(){
  2. let mut str = String::from("ws");
  3. str.push_str("xzc");
  4. println!("{}", str);//wsxzc
  5. }

push() —— 把单个字符附加到String

+:连接字符串

format!() —— 拼接字符串

  1. fn main(){
  2. let str1 = String::from("ws");
  3. let str2 = String::from("xzc");
  4. let s = format!("{}-{}", str1, str2);
  5. println!("{}", s);
  6. }
  1. fn main(){
  2. let s = String::from("xzc");
  3. for i in s.chars(){
  4. println!("{}", i);//x z c
  5. }
  6. for i in s.bytes(){
  7. println!("{}", i);//120 122 99
  8. }
  9. }

切割String

  1. fn main(){
  2. let s = String::from("xzc");
  3. let S = "what";
  4. let s_cut = &s[..2];
  5. let S_cut = &S[..3];
  6. println!("{}", s_cut);//xz
  7. println!("{}", S_cut);//wha
  8. }
  • HashMap<K, V>

 一个键(Key)对应一个值(Value)

Hash函数:决定如何在内存中存放K和V

let mut scores:HashMap<String, i32> = HashMap::new();//创建空hashmap
  1. use std::collections::HashMap;
  2. fn main(){
  3. let mut scores = HashMap::new();
  4. scores.insert(String::from("Blue"), 10);//insert()给空hashmap赋值
  5. scores.insert(String::from("Yellow"), 50);
  6. }

同构的,在hashmap中

所有的K必须是同一种类型

所有的V必须是同一种类型

访问hashmap中的值

  1. use std::collections::HashMap;
  2. fn main(){
  3. let mut scores = HashMap::new();
  4. scores.insert(String::from("Blue"), 10);//insert()给空hashmap赋值
  5. scores.insert(String::from("Yellow"), 50);
  6. println!("{}, {}", scores["Blue"], scores["Yellow"]);
  7. }
  1. use std::collections::HashMap;
  2. fn main(){
  3. let mut scores = HashMap::new();
  4. scores.insert(String::from("Blue"), 10);//insert()给空hashmap赋值
  5. scores.insert(String::from("Yellow"), 50);
  6. //println!("{}, {}", scores["Blue"], scores["Yellow"]);
  7. for (k, v) in &scores{
  8. println!("{}, {}", k, v);
  9. }
  10. }

更新hashmap

1.要添加的(k, v)中的k值,在原hashmap中存在,则新v替换旧v

  1. use std::collections::HashMap;
  2. fn main(){
  3. let mut scores = HashMap::new();
  4. scores.insert(String::from("Blue"), 10);//insert()给空hashmap赋值
  5. scores.insert(String::from("Yellow"), 50);
  6. scores.insert(String::from("Yellow"), 100);
  7. println!("{:#?}", scores);//Yellow, 100 Blue, 10
  8. }

2.若k值在原hashmap中不存在,则直接添加(k, v)键值对

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/951172
推荐阅读
相关标签
  

闽ICP备14008679号