vector 是一个具有相同类型的数据集合,元素按顺序排列。

数组 具有固定的大小,必须在编译时确定大小,因为数组存储在栈上。

vector 可以动态的调整大小,通过 addingremoving 元素。相当于动态长度的数组。

vector 数据存储在堆内存中,因此你需要自己处理 所有权借用

let mut letters: Vec<char> = vec!['a', 'b', 'c'];
println!("letters are {:?}", letters); // letters are ['a', 'b', 'c']

let first_letter = letters[0];
println!("first_letter is {}", first_letter); // first_letter is a

向 vector 中添加数据:

letters.push('d');
letters.push('e');
letters.push('f');
println!("letters are {:?}", letters); // letters are ['a', 'b', 'c', 'd', 'e', 'f']

删除最后一个元素:

letters.pop();
println!("letters are {:?}", letters); // letters are ['a', 'b', 'c', 'd', 'e']

可变的 vector:

let mut numbers: Vec<i32> = vec![11, 22, 44];
numbers[2] = 33;
println!("numbers is {}", numbers[2]); // numbers is 33

获取长度:

let mut ints = vec![22, 33, 44, 55, 66, 77];
let length: usize = ints.len();
println!("length is {}", length); // length is 6

vector 切片:

let mut slice: &[i32] = &ints;
println!("slice is {:?}", slice); // slice is [22, 33, 44, 55, 66, 77]
slice = &ints[2..5];
println!("slice is {:?}", slice); // slice is [44, 55, 66]

基于 vector 的迭代:

for it in ints.iter() {
    println!("it is {}", it);
}

// it is 22
// it is 33
// it is 44
// it is 55
// it is 66
// it is 77

在迭代中修改值:

for it in ints.iter_mut() {
    // 使用取消引用指针 (*it) 以获取和修改值
    *it *= *it;
}
println!("ints is {:?}", ints); // ints is [484, 1089, 1936, 3025, 4356, 5929]