Özet - Vektörler
- Rust kursu
- Başlangıç
- Ders 99/115
- 5 dk
push, get ve for'u birleştirerek bir alışveriş sepeti yazarsın.
Vektörler özeti
Vec<T> büyüyebilen, heap'te duran bir dizidir. Oluşturma: Vec::new(), vec![..], vec![x; n], with_capacity. Değiştirme: push, pop (Option), insert, remove, extend, clear. Okuma: v[i] (panic riski) ya da get (Option). Dolaşma: &v okur, &mut v değiştirir, v tüketir.
Sıralama ve süzme
Yerinde çalışan kullanışlı yöntemler:
let mut v = vec![5, 3, 8, 3, 1, 8];
v.sort(); // [1, 3, 3, 5, 8, 8]
v.dedup(); // [1, 3, 5, 8]
v.retain(|&x| x > 2); // [3, 5, 8]
v.reverse(); // [8, 5, 3]Ondalıklı sayılar sort ile sıralanamaz (NaN yüzünden); v.sort_by(|a, b| a.total_cmp(b)) kullanılır.
Uygulama Temizle ve süz
let mut v = vec![5, 3, 8, 3, 1, 8]; için sırayla sort, dedup ve retain(|&x| x > 2) uygula; sonucu {:?} ile yazdır.
Başlangıç kodu
fn main() {
// buraya yaz
}Örnek çözüm
fn main() {
let mut v = vec![5, 3, 8, 3, 1, 8];
v.sort();
v.dedup();
v.retain(|&x| x > 2);
println!("{:?}", v);
}Beklenen çıktı
[3, 5, 8]
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 <code>let mut v = vec![3, 1, 3, 2]; v.sort(); v.dedup();</code> sonrası <code>v</code> nedir?
- [1, 3, 2]
- [1, 2, 3] Doğru cevap
- [1, 2, 3, 3]
- [3, 1, 2]
Açıklama: dedup yalnızca ardışık tekrarları siler; bu yüzden önce sort gerekir.
2 Koşula göre tut
let mut v = vec![1, 3, 5, 8];
v.____(|&x| x > 2); // [3, 5, 8]
let mut v = vec![1, 3, 5, 8];
v.retain(|&x| x > 2); // [3, 5, 8]
Açıklama: retain koşulu sağlayan elemanları yerinde tutar.
3 Yöntem ve etkisi
| Kavram | Anlamı |
|---|---|
sort() |
Küçükten büyüğe |
dedup() |
Ardışık tekrarları siler |
retain(..) |
Koşula uyanları tutar |
reverse() |
Sırayı ters çevirir |