是否存在使用给定索引列表遍历向量的简洁方法?我有类似的代码:
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]
。
答案 0 :(得分:3)
一种可能性:
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);
}
}