وکتورها (Vectors)
وکتور (Vector) یعنی آرایه قابل رشد. یعنی اندازه اش تغییر می کند. برخلاف آرایه ها، می تواند بزرگ و کوچک شود. این یعنی برای لیست های پویا عالی است.
ساخت وکتور
برای ساخت، از ماکرو vec! استفاده کن. ماکرو یعنی کدی که کد می سازد.
fn main() {
let fruits = vec!["apple", "banana", "orange"];
}
دسترسی به عناصر
مثل آرایه ها با اندیس می خوانیم. اندیس از صفر شروع می شود.
fn main() {
let fruits = vec!["apple", "banana", "orange"];
println!("First fruit: {}", fruits[0]);
}
تغییر مقدار یک خانه
وکتور را mut کن. سپس با اندیس مقدار جدید بده.
fn main() {
let mut fruits = vec!["apple", "banana", "orange"];
fruits[0] = "grape";
println!("New first fruit: {}", fruits[0]);
}
افزودن و حذف در انتها
با push() عنصر جدید به انتها اضافه کن. با pop() آخرین را حذف کن.
fn main() {
let mut fruits = vec!["apple", "banana"];
fruits.push("cherry");
println!("{:?}", fruits);
}
fn main() {
let mut fruits = vec!["apple", "banana", "cherry"];
fruits.pop();
println!("{:?}", fruits);
}
درج و حذف با اندیس مشخص
وکتورها برای انتها بهینه اند. اما با insert() و remove() می توانی وسط یا ابتدا کار کنی.
fn main() {
let mut fruits = vec!["banana", "orange"];
fruits.insert(0, "apple");
println!("{:?}", fruits);
}
fn main() {
let mut fruits = vec!["banana", "orange"];
fruits.insert(1, "apple");
println!("{:?}", fruits);
}
fn main() {
let mut fruits = vec!["apple", "banana", "orange"];
fruits.remove(0);
println!("{:?}", fruits);
}
طول وکتور
با .len() تعداد عناصر را می گیریم. این ساده و کاربردی است.
fn main() {
let fruits = vec!["apple", "banana", "cherry"];
println!("There are {} fruits.", fruits.len());
}
حلقه روی وکتور و وام گیری
برای جلوگیری از جابه جایی داده، وکتور را وام بگیر. وام گیری (Borrowing) یعنی استفاده از ارجاع بدون مالکیت.
fn main() {
let fruits = vec!["apple", "banana", "orange"];
for fruit in &fruits {
println!("I like {}.", fruit);
}
println!("{:?}", fruits);
}
نکته: کار روی ابتدا کندتر است؛ جابه جایی عناصر لازم می شود.
گام های تمرین
- یک وکتور بساز و اولین عضو را چاپ کن.
- با
push()وpop()تغییرش بده. - یک عضو در اندیس 1 درج کن.
- با حلقه، وکتور را با
&پیمایش کن.
جمع بندی سریع
- وکتورها پویا و قابل رشد هستند.
- افزودن در انتها بهینه تر است.
insertوremoveبا اندیس هم ممکن است.- برای حلقه، از
&استفاده کن.
برای مقایسه با آرایه ها، به آرایه ها سر بزن. برای ادامه ساختارها، صفحه تاپل ها را ببین. همچنین وکتورها در راست را نشانه گذاری کن.