MST
星途 面试题库

面试题:Rust中for循环遍历Vec和HashMap的方式

请写出在Rust中使用for循环分别遍历Vec<i32>类型的向量和HashMap<String, i32>类型的哈希表的代码示例,并解释每种遍历方式的特点。
18.5万 热度难度
编程语言Rust

知识考点

AI 面试

面试题答案

一键面试

遍历 Vec<i32>

fn main() {
    let numbers: Vec<i32> = vec![1, 2, 3, 4, 5];
    for number in numbers.iter() {
        println!("Number: {}", number);
    }
}

特点

  • 顺序性Vec 是有序集合,遍历 Vec 时会按照元素插入的顺序进行访问。
  • 简单性:通过 for...in 循环结合 iter() 方法,简洁明了地对每个元素进行操作。iter() 方法返回一个迭代器,迭代器会按顺序逐个提供集合中的元素,且不会获取所有权,这意味着可以在遍历的同时继续使用原 Vec

遍历 HashMap<String, i32>

use std::collections::HashMap;

fn main() {
    let mut scores = HashMap::new();
    scores.insert(String::from("Alice"), 100);
    scores.insert(String::from("Bob"), 80);

    for (name, score) in scores.iter() {
        println!("{}: {}", name, score);
    }
}

特点

  • 无序性HashMap 是基于哈希表实现的,其遍历顺序通常是无序的。这是因为哈希表的设计目的主要是为了快速的查找和插入,而不是维护元素的插入顺序。
  • 键值对访问:在遍历 HashMap 时,会同时获取键和值。通过 iter() 方法返回的迭代器,提供的元素类型是 (&K, &V),这里 K 是键的类型,V 是值的类型,同样不会获取所有权,允许在遍历的同时继续使用原 HashMap