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 bir vektörden öğeleri kaldırmanız gerekir. Vektörlerde .erase() metodunu bir yineleyiciyle kullanmanız gerekir. Öğeleri değerlerine göre kaldırmak için std::find() ile .erase() metodunu birleştirebilirsiniz.
Bir öğeyi vektörden şu şekilde kaldırabilirsiniz. std::find(), <algorithm> başlığından gelir; bu yüzden <vector> ile birlikte ekleyin:
#include <algorithm>
#include <vector>
std::vector<int> numbers = {10, 20, 30, 40};
auto it = std::find(numbers.begin(), numbers.end(), 20);
if (it != numbers.end()) {
numbers.erase(it); // Yineleyicinin bulunduğu konumdaki öğeyi kaldırır
}erase() çağrıldıktan sonra, o konumdaki öğe kaldırılır ve sonraki tüm öğeler bir konum aşağı kayar. Var olmayan bir öğeyi bulup silmeye çalışırsanız, find() 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. Kullanıcı girdisine veya program mantığına göre belirli öğeleri kaldırmanız gereken dinamik koleksiyonları yönetirken özellikle kullanışlıdır. Silmeden önce yineleyicinin geçerli olup olmadığını daima kontrol etmeyi unutmayın.
Görev
Kolaystd::vector içinden elemanları .erase() yöntemiyle ve std::find() kullanarak kaldırmayı gösteren bir program oluştur. Bu alıştırma, bir vektörden belirli elemanları güvenli bir şekilde kaldırma ve sonuçları gözlemleme konusundaki anlayışını sınayacaktır.
Aşağıdaki girdiler sağlanacaktır:
- Vektöre başlangıçta eklenecek eleman sayısını belirten bir tam sayı
n - Ardından vektöre eklenecek
ntam sayı - Kaldırılacak eleman sayısını belirten bir tam sayı
m - Ardından vektörden kaldırılacak elemanları belirten
mtam sayı
Programın şunları yapmalıdır:
- Boş bir
std::vector<int>oluştur - Eklenecek eleman sayısını oku ve
.push_back()kullanarak bunları vektöre ekle - Tüm eklemelerden sonra vektörün başlangıç boyutunu yazdır
- Kaldırılacak eleman sayısını oku
- Kaldırılacak her eleman için, onu bulmak üzere
std::find()kullan; ardından bulunursa kaldırmak için.erase()kullan - Her kaldırma denemesinden sonra vektörün geçerli boyutunu yazdır
- Son olarak, vektörde kalan elemanlar üzerinde sırayla dolaş ve bunları yazdır
Aşağıdaki kesin çıktı biçimini kullan:
Vektörün başlangıç boyutu:
Initial size: [size]Her kaldırma denemesinden sonra:
After removing [number]: size = [current_size]Geriye kalan son elemanlar:
Remaining elements: [element1] [element2] [element3] ....erase() yönteminin bir yineleyici gerektirdiğini unutma; bu nedenle elemanı bulmak için önce std::find() kullanmalısın. Silmeden önce her zaman elemanın bulunup bulunmadığını kontrol et. Kalan elemanları mevcut sıralarıyla yazdırmak için aralık tabanlı bir for döngüsü kullan.
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 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: Kodunu aşağıya yaz
// 1. Vektörün başlangıç boyutunu yazdır
// 2. Çıkarılacak her elemanı bul, .erase() kullan ve her çıkarma işleminden sonra vektörün boyutunu yazdır
// 3. Vektörde kalan elemanları yazdır
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 EklemeKendi başına pratik yap: Online C++ derleyicisi