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.
Görev
Kolaystd::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
ntamsayı - Vektörden kaldırılacak öğe sayısını belirten bir tamsayı
m - Ardından vektörden kaldırılacak öğeleri belirten
mtamsayı
Programınız şunları yapmalıdır:
- Boş bir
std::vector<int>oluşturun - Eklenecek öğe sayısını okuyun ve
.push_back()kullanarak bunları vektöre ekleyin - Tüm eklemelerden sonra başlangıç vektörünün boyutunu yazdırın
- Kaldırılacak öğe sayısını okuyun
- Kaldırılacak her öğe için, öğeyi bulmak üzere
std::find()kullanın, ardından bulunursa kaldırmak için.erase()kullanın - Her kaldırma denemesinden sonra vektörün güncel boyutunu yazdırın
- 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;
}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