1
我試圖使用selection_sort
,同時保持原有的無序向量來創建一個排序的向量:錯誤類型不匹配:預計「收藏:: VEC :: VEC <i32>」,發現「與類別:: VEC :: VEC <i32>」
fn main() {
let vector_1: Vec<i32> = vec![15, 23, 4, 2, 78, 0];
let sorted_vector = selection_sort(&vector_1);
println!("{:?} is unsorted, \n{:?} is sorted.", &vector_1, &sorted_vector);
}
fn selection_sort(vector_1: &Vec<i32>) -> Vec<i32> {
let mut vector = vector_1;
let start = 0;
while start != vector.len() {
for index in (start .. vector.len()) {
match vector[index] < vector[start] {
true => vector.swap(index, start),
false => println!("false"), // do nothing
}
}
start += 1;
}
vector
}
錯誤:
Compiling selection_sort v0.1.0 (file:///home/ranj/Desktop/Rust/algorithms/sorting/selection_sort)
src/main.rs:21:5: 21:11 error: mismatched types:
expected `collections::vec::Vec<i32>`,
found `&collections::vec::Vec<i32>`
(expected struct `collections::vec::Vec`,
found &-ptr) [E0308]
src/main.rs:21 vector
^~~~~~
src/main.rs:21:5: 21:11 help: run `rustc --explain E0308` to see a detailed explanation
error: aborting due to previous error
Could not compile `selection_sort`.
那會我節省了很多打字..反正我也明白,這兩個是不同類型的,但我不知道如何複製其值 – user3419211
所以,如果我理解你對,最好使用矢量的參考切片而不是對矢量的引用。做一個矢量切片不是一個額外的計算?如果我是正確的使用參考矢量vs參考切片取相同數量的內存 – user3419211
從參考矢量創建切片是非常便宜。 slice是一個直接指向數據的指針,'&Vec'對於接受它的函數有一個額外的間接。 – bluss