1. 程式人生 > 其它 >【Rust】陣列切片(一)

【Rust】陣列切片(一)

環境

  • Time 2022-02-25
  • Rust 1.59.0

概念

引用陣列中連續的一部分。

示例

二分查詢-命中

如果查詢到了,返回 Ok 和找到的位置索引。

fn main() {
    let arr = [1, 2, 3, 4];
    let result = arr.binary_search(&2);
    match result {
        Ok(index) => println!("find index: {index}"),
        Err(index) => println!("not find index: {index}"),
    }
}

二分查詢-未命中

如果未查詢到,返回 Err 和應該插入的位置索引。

fn main() {
    let arr = [1, 2, 3, 4];
    let result = arr.binary_search(&0);
    match result {
        Ok(index) => println!("find index: {index}"),
        Err(index) => println!("not find index: {index}"),
    }
}

根據比較函式搜尋

fn main() {
    let arr = [1, 2, 3, 4];
    let result = arr.binary_search_by(|v| v.cmp(&2));
    match result {
        Ok(index) => println!("find index: {index}"),
        Err(index) => println!("not find index: {index}"),
    }
}

根據自定義屬性搜尋

fn main() {
    let arr = [(1, 10), (2, 20), (3, 30), (4, 40)];
    let result = arr.binary_search_by_key(&20, |&(_, b)| b);
    match result {
        Ok(index) => println!("find index: {index}"),
        Err(index) => println!("not find index: {index}"),
    }
}

總結

瞭解了陣列切片中二分查詢的使用方式。

附錄