【发布时间】:2017-03-18 23:28:35
【问题描述】:
我了解如何对整个向量进行操作,尽管我不认为这是惯用的 Rust:
fn median(v: &Vec<u32>) -> f32 {
let count = v.len();
if count % 2 == 1 {
v[count / 2] as f32
} else {
(v[count / 2] as f32 + v[count / 2 - 1] as f32) / 2.0
}
}
fn main() {
let mut v1 = vec![3, 7, 8, 5, 12, 14, 21, 13, 18];
v1.sort();
println!("{:.*}", 1, median(&v1));
}
但是如果我只想对这个向量的一半进行操作呢?例如,第一个四分位数是下半部分的中位数,第三个四分位数是上半部分的中位数。我的第一个想法是构建两个新向量,但这似乎不太正确。
如何获得“一半”向量?
【问题讨论】:
-
关于如何传递迭代器请查看here。对于您的第一个问题,您可以分一杯羹,例如
let slice = &v1[0..v1.len()/2] -
One question per question, please。由于您的“接受迭代器”问题已经有重复,我刚刚删除了它。
标签: rust