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.
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
nadet tam sayı - Silinecek eleman sayısını temsil eden bir tam sayı
m - Ardından kümeden silinecek elemanları temsil eden
madet tam sayı
Programınız şunları yapmalıdır:
- Boş bir
std::set<int>oluşturun - Eklenecek eleman sayısını okuyun ve
.insert()kullanarak bunları kümeye ekleyin - Tüm eklemelerden sonra kümenin başlangıç boyutunu yazdırın
- Silinecek eleman sayısını okuyun
- Silinecek her bir eleman için, silme işlemini denemek üzere
.erase()kullanın - Her silme denemesinden sonra kümenin mevcut boyutunu yazdırın
- 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ırKü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;
}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İşaretçiler ve Bellek
İşaretçi Nedir?Adres OperatörüDereference OperatörüNull İşaretçilerİşaretçiler ve Diziler'new' ile Dinamik Bellek'delete' ile Belleği Serbest BırakmaÖzet - İşaretçi Pratiği2Vektörler (Dinamik Diziler)
std::vector'a GirişBir Vektör OluşturmaEleman EklemeElemanlara ErişmeVektör BoyutuFor Döngüsü ile YinelemeAralık Tabanlı For DöngüsüEleman SilmeÖzet - Vektör İşlemleri3Proje: Görev Listesi Aracı
Projeye Genel BakışGörev Ekleme6Kümeler (Benzersiz Elemanlar)
std::set'e GirişKüme Oluşturma ve Eleman EklemeEleman Varlığını Kontrol EtmeEleman SilmeKüme Üzerinde YinelemeÖzet - Benzersiz Sayılar