番外-rust迭代器-iter()

iter() 是 Rust 中的一个方法,它可以用于 可迭代的集合,返回一个 不可变的迭代器。这个方法使得你可以遍历集合中的元素。通常,iter() 适用于以下几种类型:

1. 数组(Array)

数组是固定大小的集合,iter() 可以用来遍历数组中的元素。

示例:

let arr = [1, 2, 3];
for item in arr.iter() {
println!("{}", item); // 输出: 1, 2, 3
}

2. 切片(Slice)

切片是对数组或 Vec 的视图,iter() 同样可以用来遍历切片中的元素。

示例:

let slice = &[1, 2, 3];
for item in slice.iter() {
println!("{}", item); // 输出: 1, 2, 3
}

3. Vec

Vec 是动态数组类型,iter() 可以用来遍历 Vec 中的元素。

示例:

let vec = vec![1, 2, 3];
for item in vec.iter() {
println!("{}", item); // 输出: 1, 2, 3
}

4. 字符串(String)

String 类型支持 iter(),但是它是以字符为单位进行迭代的,而不是字节。

示例:

let s = String::from("hello");
for c in s.chars() {
println!("{}", c); // 输出: h, e, l, l, o
}

5. HashMapHashSet

对于哈希表类型的集合,例如 HashMapHashSet,也可以使用 iter() 方法。对于 HashMapiter() 会返回一个迭代器,允许你访问键值对;对于 HashSet,则会返回集合中的元素。

示例:

use std::collections::HashMap;
let mut map = HashMap::new();
map.insert("a", 1);
map.insert("b", 2);
for (key, value) in map.iter() {
println!("{}: {}", key, value); // 输出: a: 1, b: 2
}

6. BTreeMapBTreeSet

BTreeMapBTreeSet 也支持 iter(),它们会返回按照键排序的元素。

示例:

use std::collections::BTreeMap;
let mut map = BTreeMap::new();
map.insert(1, "a");
map.insert(2, "b");
for (key, value) in map.iter() {
println!("{}: {}", key, value); // 输出: 1: a, 2: b
}

7. VecDeque

VecDeque 是一个双端队列(deque),支持 iter(),使得你可以从两端遍历元素。

示例:

use std::collections::VecDeque;
let mut deque = VecDeque::new();
deque.push_back(1);
deque.push_back(2);
deque.push_back(3);
for item in deque.iter() {
println!("{}", item); // 输出: 1, 2, 3
}

8. LinkedList

LinkedList 是一个双向链表,它也支持 iter() 来进行迭代。

示例:

use std::collections::LinkedList;
let mut list = LinkedList::new();
list.push_back(1);
list.push_back(2);
list.push_back(3);
for item in list.iter() {
println!("{}", item); // 输出: 1, 2, 3
}

总结

iter() 方法适用于 所有实现了 IntoIterator trait 的类型,这些类型包括:

  • 数组(array)
  • 切片(slice)
  • VecVecDeque
  • 字符串(String)
  • 集合类型,如 HashMap, HashSet, BTreeMap, BTreeSet, LinkedList

iter() 返回的迭代器允许你访问集合中的元素,并且不改变原始数据。它对于遍历集合非常有用,并且通常与 for 循环一起使用。

posted @   代码世界faq  阅读(18)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示