Menu
Coddy logo textTech

Eleman Silme

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

Bazen artık ihtiyaç duyulmadıklarında öğeleri bir vektörden kaldırmanız gerekir. Vektörler, .erase() yöntemiyle birlikte bir yineleyici kullanmanızı gerektirir. Öğeleri değere göre kaldırmak için std::find() ile .erase() yöntemini birleştirebilirsiniz.

Bir vektörden bir elemanı şu şekilde silebilirsiniz:

std::vector<int> numbers = {10, 20, 30, 40};
auto it = std::find(numbers.begin(), numbers.end(), 20);
if (it != numbers.end()) {
    numbers.erase(it);  // Yineleyici konumundaki öğeyi kaldırır
}

erase() fonksiyonunu çağırdıktan sonra, o konumdaki öğe kaldırılır ve sonraki tüm öğeler aşağı kayar. Mevcut olmayan bir öğeyi bulmaya ve silmeye çalışırsanız, find() fonksiyonu end() değerini döndürür ve bunu kontrol etmek hataları önler.

Bu desen, öğe kaldırmayı güvenli ve öngörülebilir hâle getirir. Özellikle kullanıcı girdisine veya program mantığına göre belirli öğeleri kaldırmanız gereken dinamik koleksiyonları korumak için kullanışlıdır. Silmeden önce yineleyicinin geçerli olup olmadığını her zaman kontrol etmeyi unutmayın.

challenge icon

Görev

Kolay

std::vector yöntemini .erase() ile birlikte kullanarak bir std::find() içinden öğelerin kaldırılmasını gösteren bir program oluşturun. Bu görev, bir vektörden belirli öğeleri güvenli bir şekilde nasıl kaldıracağınızı ve sonuçları nasıl gözlemleyeceğinizi anlamanızı test edecektir.

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

  • Vektöre başlangıçta eklenecek öğe sayısını belirten bir tamsayı n
  • Ardından vektöre eklenecek n tamsayı
  • Vektörden kaldırılacak öğe sayısını belirten bir tamsayı m
  • Ardından vektörden kaldırılacak öğeleri belirten m tamsayı

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

  1. Boş bir std::vector<int> oluşturun
  2. Eklenecek öğe sayısını okuyun ve .push_back() kullanarak bunları vektöre ekleyin
  3. Tüm eklemelerden sonra başlangıç vektörünün boyutunu yazdırın
  4. Kaldırılacak öğe sayısını okuyun
  5. Kaldırılacak her öğe için, öğeyi bulmak üzere std::find() kullanın, ardından bulunursa kaldırmak için .erase() kullanın
  6. Her kaldırma denemesinden sonra vektörün güncel boyutunu yazdırın
  7. Son olarak, vektörde kalan öğeler üzerinde yineleme yapın ve bunları sırasıyla yazdırın

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

Başlangıç vektörünün boyutu:

Initial size: [size]

Her kaldırma denemesinden sonra:

After removing [number]: size = [current_size]

Son kalan öğeler:

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

.erase() yönteminin bir yineleyici gerektirdiğini unutmayın; bu nedenle öğeyi bulmak için önce std::find() kullanmalısınız. Silmeden önce öğenin bulunup bulunmadığını her zaman kontrol edin. Kalan öğeleri mevcut sıralarında yazdırmak için aralık tabanlı bir for döngüsü kullanın.

Kendin dene

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int main() {
    // Eklenecek eleman sayısını oku
    int n;
    cin >> n;
    
    // Boş bir vektör oluştur
    vector<int> myVector;
    
    // n adet elemanı oku ve ekle
    for (int i = 0; i < n; i++) {
        int element;
        cin >> element;
        // Elemanı vektöre ekle
    }
    
    // Çıkarılacak eleman sayısını oku
    int m;
    cin >> m;
    
    // TODO: Kodunuzu aşağıya yazın
    // 1. Başlangıç vektör boyutunu yazdır
    // 2. Çıkarılacak her bir eleman için, elemanı bul ve .erase() kullanıp her silme işleminden sonra boyutu yazdır
    // 3. Vektörde kalan elemanları yazdır
    
    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

Kendi başına pratik yap: Online C++ derleyicisi