Rust 迭代enumerate概述 - 將數組中的值編號
enumerate是一個常用於迭代器的方法
文件[1]這樣寫
建立一個迭代器,並返回當下的迭代數以及值
fn enumerate(self) -> Enumerate<Self>
self為一個迭代器
enumerate為返回一個Enumerate迭代器,返回兩個值,索引值以及元素值
範例
若我有學生名字,希望自動歸類他們的座號
就可以使用enumerate
let names = vec!["Alice", "Bob", "Charlie"];
for (index, name) in names.iter().enumerate() {
println!("Index: {}, Name: {}", index, name);
}
第一行創建一個數組,裡面包含名字Alice、Bob、Charlie
第二行for迴圈,將名字透過iter放入迭代器
並透過enumerate對其取索引值給index,名字給name
則會依次顯示
Index: 0, Name: Alice
Index: 1, Name: Bob
Index: 2, Name: Charlie
enumerate在需要知道元素的索引值很好用
使我們可以同時訪問索引值和元素值
假設現在有個題目,希望取得數組中最大值以及其索引值
let numbers = vec![10, 25, 5, 32, 8, 15];
就可以透過enumerate尋找
if let Some((max_index, max_value)) =
numbers.iter().enumerate().max_by_key(|&(_, &value)| value)
{
println!("Max value: {} at index: {}", max_value, max_index);
} else {
println!("No maximum value found.");
}
第二行,先將數組放入迭代器
使用enumerate取得索引值,會輸出
(0, 10)
(1, 25)
(2, 5)
(3, 32)
(4, 8)
(5, 15)
並透過max_by_key[2]方法找出最大元素,透過閉包|&(_, &value)| value指定要找的元素
最後返回(3, 32)
最後輸出
Max value: 32 at index: 3
0 comments:
張貼留言