簡體   English   中英

如何創建一個迭代器,該迭代器產生由 Rust 中的索引列表指定的集合元素?

[英]How to create an iterator that yields elements of a collection specified by a list of indices in Rust?

是否有一種簡潔的方法可以使用給定的索引列表迭代向量? 我有類似於此的代碼:

fn main() {
    // Create a vector
    let v = vec![0.1, 1.2, 2.3, 3.4, 4.5, 5.6, 7.8];

    // Create a series of indices
    let i = vec![3, 4, 2, 1];

    // Iterate over the elements in v in the order specified by each index in i
    for j in &i {
        println!("{}", v[*j]);
    }
}

我想對其進行修改,以便直接遍歷v中的元素,而不必遍歷i中的索引。 基本上,看起來類似於for x in vs[i]東西。

一種可能:

i.iter().map(|idx| v[*idx])

如:

fn main() {
    // Create a vector
    let v = vec![0.1, 1.2, 2.3, 3.4, 4.5, 5.6, 7.8];

    // Create a series of indices
    let i = vec![3, 4, 2, 1];

    // Iterate over the elements in v in the order specified by i
    for j in i.iter().map(|idx| v[*idx]) {
        println!("{}", j);
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM