【发布时间】:2020-02-17 21:49:48
【问题描述】:
是否有一种简洁的方法可以使用给定的索引列表迭代向量?我有类似这样的代码:
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]。
【问题讨论】:
-
没有内置任何东西,但您可以创建自己的迭代器来完成它。
-
for j in i.iter().map(|&i| v[i]) {}怎么样?