gpt4 book ai didi

vector - 获取向量中满足条件的所有索引

转载 作者:行者123 更新时间:2023-12-05 08:35:53 25 4
gpt4 key购买 nike

我想知道是否有可能获得满足 Rust 向量数据类型中的条件的所有索引。我知道 trait 运算符提供了一种方法来查找执行此操作的第一个元素:

let test=vec![1,0,0,1,1];
let index = test.iter().position(|&r| r == 1);
println!("{}",index) //0

但是,我有兴趣在测试 vec 中获取所有等于 1 的索引。

let test=vec![1,0,0,1,1];
let indexes = //Some Code
println!("{:?}",indexes) //0,3,4

我该怎么办?

最佳答案

使用enumerate() :

let test = vec![1, 0, 0, 1, 1];
let indices = test
.iter()
.enumerate()
.filter(|(_, &r)| r == 1)
.map(|(index, _)| index)
.collect::<Vec<_>>();
dbg!(indices); // 0, 3, 4

Playground .

您还可以结合使用 filter()map(),尽管我认为前一个版本更简洁:

let indices = test
.iter()
.enumerate()
.filter_map(|(index, &r)| if r == 1 { Some(index) } else { None })
.collect::<Vec<_>>();

或者

let indices = test
.iter()
.enumerate()
.filter_map(|(index, &r)| (r == 1).then(|| index))
.collect::<Vec<_>>();

关于vector - 获取向量中满足条件的所有索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71406140/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com