Menu
CoddyTech

Eleman Kaldırma

Coddy'nin Rust Journey'sinin Mantık & Akış bölümünün bir parçası. Ders 13 / 66.

Bazen bir vektöre yalnızca eleman eklemeniz değil, vektörden eleman çıkarmanız da gerekir. Rust, elemanları çıkarmak için her biri farklı durumlara yönelik iki temel yöntem sunar.

.pop() yöntemi, vektörün son öğesini kaldırır ve döndürür:

let mut numbers = vec![10, 20, 30, 40];
let last = numbers.pop(); // 40'ı kaldırır, Some(40) döndürür
// numbers artık [10, 20, 30]

.pop() metodunun bir Option döndürdüğüne dikkat et: kaldırılacak bir öğe varsa Some(value), vektör zaten boşsa None verir. Bu sayede boş vektörlerde bile güvenle kullanılabilir.

.remove() yöntemi belirli bir dizindeki öğeyi kaldırır ve bu öğeyi döndürür:

let mut fruits = vec!["apple", "banana", "cherry"];
let removed = fruits.remove(1); // "banana" öğesini kaldırır
// fruits artık ["apple", "cherry"]

.remove() kullandığında, kaldırılan indeksten sonraki tüm öğeler boşluğu doldurmak için sola kayar. Başlangıçtan veya ortadan öğe kaldırırken bu işlem büyük vektörlerde daha yavaş olabilir; çünkü birçok öğenin taşınması gerekir.

Her iki yöntem de vektörün içeriğini değiştirdiği için vektörün değiştirilebilir olmasını gerektirir. Sonundan bir öğe kaldırmak istediğinde .pop(), belirli bir konumdan kaldırmak istediğinde ise .remove() kullan.

challenge icon

Görev

Kolay

İki girdi alacaksın: ilki virgülle ayrılmış bir sayı listesi, ikincisi ise kaldırılacak bir indeks. Başlangıç kodu her iki girdiyi de zaten okur ve sayıları değiştirilebilir bir numbers vektörüne dönüştürür. Belirtilen indeksteki öğeyi kaldır ve kalan öğeleri ayrı satırlara yazdır.

Gereksinimler:

  • İkinci girdiyi (index_input), indeksi temsil eden bir tam sayıya dönüştür
  • Bu indeksteki öğeyi kaldırmak için .remove() kullan
  • Kalan her öğeyi ayrı bir satıra yazdır

Girdi:

  • İlk satır: Virgülle ayrılmış tam sayılar (ör. 10,20,30,40,50)
  • İkinci satır: Kaldırılacak indeksi temsil eden bir tam sayı

Çıktı: Vektörde kalan her öğeyi ayrı bir satıra yazdır

Kendin dene

use std::io;

fn main() {
    // Virgülle ayrılmış sayıları oku
    let mut numbers_input = String::new();
    io::stdin().read_line(&mut numbers_input).expect("Failed to read line");
    
    // Silinecek öğenin indeksini oku
    let mut index_input = String::new();
    io::stdin().read_line(&mut index_input).expect("Failed to read line");
    
    // "10,20,30" değerini bir vektöre dönüştür: virgüllerden böl, her parçayı sayıya dönüştür, bir Vec içinde topla
    let mut numbers: Vec<i32> = numbers_input
        .trim()
        .split(',')
        .map(|s| s.trim().parse().unwrap())
        .collect();
    
    // TODO: Kodunu aşağıya yaz
    // 1. index_input değişkenini bir tam sayıya dönüştür
    // 2. Belirtilen indeksteki öğeyi sil
    // 3. Kalan her öğeyi ayrı bir satıra yazdır
    
}
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Mantık & Akış bölümündeki tüm dersler

Kendi başına pratik yap: Online Rust derleyicisi