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.
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
}
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
1İleri Seviye Kontrol Akışı
'match' İfadesiBirden Çok Değeri EşleştirmeAralıkları Eşleştirme'if let' İfadesiİfade Olarak DöngülerÖzet - Basit Komut Ayrıştırıcı4Struct'lar ile Verileri Gruplama
Struct Nedir?Struct'lara Genel BakışStruct Alanlarına ErişmeMutable Struct'larFonksiyon Parametresi Olarak Struct'larTuple Struct'larÖzet - Bir Kitap Struct'ı Oluşturun7'Result' ile Hata Yönetimi
'Result' Nedir?'Result' ile 'match' Kullanımıis_ok() ve is_err()Kısayollar: unwrap ve expectSoru İşareti Operatörü '?'String'leri Sayılara DönüştürmeÖzet - Güvenli Bölme Fonksiyonu10Closures ve Anonim Fonksiyonlar
Closure Nedir?Basit Bir Closure TanımlamaParametreli Closure'larOrtamı YakalamakÖzet - Basit Toplayıcı Closure2Vektörlere Giriş
Vektör Nedir?Vektör Oluşturmapush ile Eleman EklemeVektör Elemanlarına ErişmeVektör Üzerinde YinelemeDeğiştirilebilir YinelemeEleman KaldırmaÖzet - Temel Skor Takipçisi5Hash Map'ler ile Anahtar-Değer Çiftleri
Hash Map Nedir?Bir Hash Map OluşturmaAnahtar-Değer Çiftleri EklemeDeğerlere ErişmeBir Hash Map Üzerinde GezinmeBir Değeri GüncellemeBir Çifti KaldırmaÖzet - Kelime Sayacı11Son Meydan Okumalar
Özet - Benzersiz ÖğelerÖzet - Kullanıcı Profili DoğrulayıcıÖzet - Not Özetleyici3Komut Satırı Yapılacaklar Listesi
Proje KurulumuGörev EklemeTüm Görevleri GörüntülemeGörev SilmeFinal Kodu6'Option' ile Yokluğu Yönetme
'Option' Nedir?'Option' ile 'match' Kullanımıis_some() ve is_none()Bir 'Option' Değerini Açmak (Unwrapping)expect MetoduVarsayılan Değer Sağlama: unwrap_orÖzet - Bir Eleman Bulma9String Dilimleri ve Daha Fazlası
String ve &strString Dilimleri OluşturmaFonksiyon Parametresi Olarak DilimlerDiğer DilimlerÖzet - İlk Kelimeyi BulmaKendi başına pratik yap: Online Rust derleyicisi