Ekleme ve çıkarma
- Rust kursu
- Başlangıç
- Ders 95/115
- 4 dk
push ve pop ile vektöre eleman ekleyip çıkarırsın.
Ekleme ve çıkarma
Vektörü değiştiren yöntemler mut değişken ister:
let mut v = vec![1, 2];
v.push(3); // sona ekle: [1, 2, 3]
v.insert(0, 0); // 0. konuma ekle: [0, 1, 2, 3]
let son = v.pop(); // Some(3): [0, 1, 2]
let ilk = v.remove(0);// 0: [1, 2]pop boş vektörde de güvenlidir (None döner), çünkü sonuç Option<T>'dir. remove ve insert ise geçersiz indekste panic verir.
Toplu işlemler
Birden çok elemanı aynı anda eklemek ya da çıkarmak için:
let mut v = vec![1, 2];
v.extend([3, 4, 5]); // [1, 2, 3, 4, 5]
v.truncate(3); // [1, 2, 3]
let kalan: Vec<i32> = v.drain(1..).collect(); // v = [1], kalan = [2, 3]
v.clear(); // []swap_remove(i), elemanı sondaki elemanla değiştirip çıkarır; sıra bozulur ama O(1)'dir.
Uygulama Ekle ve çıkar
let mut v = vec![1, 2]; ile başla. Sırayla push(3), insert(0, 0), let son = v.pop(); ve let ilk = v.remove(0); uygula. v, son ({:?}) ve ilk değerlerini tek satırda yazdır.
Başlangıç kodu
fn main() {
// buraya yaz
}Örnek çözüm
fn main() {
let mut v = vec![1, 2];
v.push(3);
v.insert(0, 0);
let son = v.pop();
let ilk = v.remove(0);
println!("{:?} {:?} {}", v, son, ilk);
}Beklenen çıktı
[1, 2] Some(3) 0
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 <code>insert(0, x)</code> ile <code>push(x)</code> arasındaki performans farkı nedir?
- insert bellek ayırmaz
- insert(0, ..) tüm elemanları kaydırır (O(n)); push genellikle O(1) Doğru cevap
- Fark yoktur
- push daha yavaştır
Açıklama: Başa sık ekleme yapıyorsan VecDeque daha uygundur.
2 Sondan çek
let mut v = vec![1, 2, 3];
let son = v.____(); // Some(3)
let mut v = vec![1, 2, 3];
let son = v.pop(); // Some(3)
Açıklama: pop son elemanı çıkarıp Option içinde döndürür.
3 Yöntem ve [1, 2, 3] üzerindeki etkisi
| Kavram | Anlamı |
|---|---|
push(4) |
[1, 2, 3, 4] |
pop() |
Some(3) |
remove(0) |
1 döner |
insert(1, 9) |
[1, 9, 2, 3] |