Menu
Coddy logo textTech

Eleman Silme

Coddy'nin C++ Journey'sinin Mantık & Akış bölümünün bir parçası — ders 38 / 56.

Bazen artık ihtiyaç duyulmadığında bir kümeden öğeleri kaldırmanız gerekir. .erase() yöntemi, değerini sağlayarak belirli bir öğeyi kaldırmanıza olanak tanır.

Bir kümeden bir elemanı şu şekilde silebilirsiniz:

std::set<int> numbers = {10, 20, 30, 40};
numbers.erase(20);  // 20 elemanını siler

.erase(20) metodunu çağırdıktan sonra, küme yalnızca {10, 30, 40} öğelerini içerecektir. Kümede bulunmayan bir öğeyi silmeye çalışırsanız hiçbir şey olmaz; küme değişmeden kalır ve hiçbir hata oluşmaz.

Bu, öğenin var olduğundan emin olmadığınızda bile .erase() yönteminin kullanımını güvenli hale getirir. Kullanıcı girişine veya program mantığına dayalı olarak belirli öğeleri kaldırmanız gereken durumlarda, temiz koleksiyonlar sürdürmek için özellikle yararlıdır.

challenge icon

Görev

Kolay

.erase() metodunu kullanarak bir std::set içinden eleman silmeyi gösteren bir program oluşturun. Bu görev, bir kümeden belirli elemanları güvenli bir şekilde nasıl çıkaracağınızı ve sonuçları nasıl gözlemleyeceğinizi anlama yeteneğinizi test edecektir.

Aşağıdaki girdiler sağlanacaktır:

  • Kümeye başlangıçta eklenecek eleman sayısını temsil eden bir tam sayı n
  • Ardından kümeye eklenecek n adet tam sayı
  • Silinecek eleman sayısını temsil eden bir tam sayı m
  • Ardından kümeden silinecek elemanları temsil eden m adet tam sayı

Programınız şunları yapmalıdır:

  1. Boş bir std::set<int> oluşturun
  2. Eklenecek eleman sayısını okuyun ve .insert() kullanarak bunları kümeye ekleyin
  3. Tüm eklemelerden sonra kümenin başlangıç boyutunu yazdırın
  4. Silinecek eleman sayısını okuyun
  5. Silinecek her bir eleman için, silme işlemini denemek üzere .erase() kullanın
  6. Her silme denemesinden sonra kümenin mevcut boyutunu yazdırın
  7. Son olarak, kümede kalan elemanlar üzerinde gezinin ve bunları sıralı bir şekilde yazdırın

Aşağıdaki tam çıktı formatını kullanın:

Başlangıç küme boyutu:

Initial size: [size]

Her silme denemesinden sonra:

After removing [number]: size = [current_size]

Kalan son elemanlar:

Remaining elements: [element1] [element2] [element3] ...

.erase() metodunun, kümede bulunmayan elemanları silme girişimlerini güvenli bir şekilde yönettiğini unutmayın; bu durumda küme değişmeden kalır ve hata oluşmaz. Kalan elemanları yazdırmak için aralık tabanlı (range-based) bir for döngüsü kullanın; kümeler elemanlarını sıralı bir düzende tuttuğu için elemanlar otomatik olarak sıralı görüntülenecektir.

Kopya kağıdı

Bir kümeden belirli bir öğeyi değerini belirterek kaldırmak için .erase() yöntemini kullanın:

std::set<int> numbers = {10, 20, 30, 40};
numbers.erase(20);  // 20 öğesini kaldırır

Kümede bulunmayan bir öğeyi silmeye çalışırsanız hiçbir şey olmaz - küme değişmeden kalır ve herhangi bir hata oluşmaz, bu da .erase() kullanımını güvenli hale getirir.

Kendin dene

#include <iostream>
#include <set>
using namespace std;

int main() {
    // Eklenecek eleman sayısını oku
    int n;
    cin >> n;
    
    // Boş bir küme (set) oluştur
    set<int> mySet;
    
    // n adet elemanı oku ve ekle
    for (int i = 0; i < n; i++) {
        int element;
        cin >> element;
        // Elemanı kümeye ekle
    }
    
    // Çıkarılacak eleman sayısını oku
    int m;
    cin >> m;
    
    // TODO: Kodunuzu aşağıya yazın
    // 1. Başlangıç küme boyutunu yazdırın
    // 2. Çıkarılacak her bir eleman için .erase() kullanın ve her çıkarmadan sonra boyutu yazdırın
    // 3. Kümede kalan elemanları yazdırın
    
    return 0;
}
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