CodeBlanks Logo Icon CodeBlanks

Ekleme ve çıkarma

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

main.rs
fn main() {
    // buraya yaz
}

Örnek çözüm

main.rs
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

Soru
let mut v = vec![1, 2, 3];
let son = v.____();   // Some(3)
Cevap
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]

Başlangıç bölümündeki tüm dersler

16 Proje: Yapılacaklar listesi

  1. Görev modeli
  2. Ekleme
  3. Listeleme
  4. İşaretleme
  5. Komut okuma