rust - 对返回 `()` 的向量进行排序

标签 rust

错误告诉我 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/

相关文章:

rust - 如何使用 Piston 图像库更改图像颜色类型?

rust - 获取符号链接(symbolic link)指向的实际路径

rust - 如何在 Rust 的变量中存储模式?

rust - 在 Rc 包装的对象中调用可变方法的标准方法是什么?

rust - 为什么by_ref不能阻止.all使用迭代器?

rust - 从多个非根二进制文件导入非根模块

rust - 在 Rust 中指向临时对象的原始指针可以吗?

rust - 我的 Cargo.toml 显示一些红线,错误无法编译 serde_derive

rust - 自动读取文件内容

asynchronous - 在实践中实现Future时如何使用Context和Wakers