错误告诉我 len()
未针对类型 ()
实现。我认为这意味着 v.sort()
(下面的代码)返回()
?
重现代码在这里:
fn main() {
let vec = vec![1,2,3,4,5];
println!("{}",median(vec))
}
fn median(v: Vec<i32>) -> i32 {
let sorted = v.sort();
let med_idx = sorted.len() as i32 / 2;
sorted[med_idx]
}
最佳答案
排序函数具有签名 pub fn sort(&mut self)
并且不返回任何内容。相反,它会修改您正在运行它的向量。由于您将 v
作为移动参数,因此我们可以对其进行排序而不是克隆它。此外,由于 med_idx
正在索引向量,因此它应该是 usize
而不是 i32
。
fn main() {
let vec = vec![1, 2, 3, 4, 5];
println!("{}", median(vec));
}
fn median(mut v: Vec<i32>) -> i32 {
v.sort();
let med_idx = v.len() / 2;
v[med_idx]
}
关于rust - 对返回 `()` 的向量进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67325137/