【Rust】陣列切片(六)
阿新 • • 發佈:2022-05-26
環境
- Time 2022-03-07
- Rust 1.59.0
概念
陣列切片是引用陣列中連續的一部分。
示例
repeat
對元素進行重複。
fn main() {
let arr = [0, 1];
let vec = arr.repeat(4);
println!("{vec:?}"); //[0, 1, 0, 1, 0, 1, 0, 1]
}
reverse
反轉。
fn main() {
let mut arr = [0, 1, 2, 3, 4];
arr.reverse();
println!("{arr:?}"); //[4, 3, 2, 1, 0]
}
rotate_left
旋轉和交換。
fn main() {
let mut arr = [0, 1, 2, 3, 4];
arr.rotate_left(2);
println!("{arr:?}"); // [2, 3, 4, 0, 1]
}
split
分割,可變版本 split_mut
,rsplit_mut
。
fn main() { let arr = [0, 1, 2, 3, 4]; let split = arr.split(|n| n == &2); let rsplit = arr.rsplit(|n| n == &2); split.for_each(|e| println!("{e:?}")); rsplit.for_each(|e| println!("{e:?}")); }
partition_point
提供一個閉包獲取滿足條件的切分點,陣列需要有序。
fn main() {
let arr = [0, 1, 2, 3, 4];
let i = arr.partition_point(|&x| x < 2);
println!("{i}");
}
splitn
分割,並且進行次數限制,可變版本 splitn_mut
,rsplitn_mut
。
fn main() { let arr = [0, 1, 2, 3, 4]; for ele in arr.splitn(2, |&e| e % 2 != 0) { println!("{ele:?}") } for ele in arr.rsplitn(2, |&e| e % 2 != 0) { println!("{ele:?}") } }
split_at
根據位置分割,可變版本 split_at_mut
。
fn main() {
let arr = [0, 1, 2, 3, 4];
let (left, right) = arr.split_at(2);
println!("left: {left:?}, right: {right:?}")
}
總結
瞭解了陣列切片中相關的一些方法。