番外-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 @ 2025-01-16 18:09  代码世界faq  阅读(99)  评论(0)    收藏  举报