Dizi, birden çok veriyi depolamak için kullanılır ve dizinin öğelerinin sayısı çalışma zamanında değiştirilemez. Bu sorun, dinamik bir dizi gibi çalışan bir vektör kullanılarak çözülebilir. Vektör sınıfında, vektöre bir öğe eklemek ve vektörden bir öğe çıkarmak için farklı işlevler bulunur. Silme() işlevi, vektörün boyutunu küçülten çalışma zamanında vektörden bir veya daha fazla öğeyi kaldırmak için kullanılır. Bu işlevin kullanımları bu öğreticide açıklanmıştır.
Sözdizimi:
Bu işlevin iki tür sözdizimi aşağıda verilmiştir.
yineleyici silme(yineleyici konumu);
Yukarıdaki silme() işlevi, vektörden tek bir öğeyi çıkarmak için kullanılır ve bir yineleyici döndürür ve ardından en son silinen öğenin izlediği öğeye işaret eder.
yineleyici silme(yineleyici başlangıç_konumu, yineleyici bitiş_konumu);
Yukarıdaki delete() işlevi, bu işlevin birinci ve ikinci argümanlarında belirtilen konuma bağlı olarak vektörden birden çok öğeyi kaldırmak için kullanılır.
Ön koşul:
Bu öğreticinin örneklerini kontrol etmeden önce, sistemde g++ derleyicisinin kurulu olup olmadığını kontrol etmelisiniz. Visual Studio Code kullanıyorsanız, yürütülebilir kodu oluşturmak için C++ kaynak kodunu derlemek için gerekli uzantıları yükleyin. Burada, C++ kodunu derlemek ve yürütmek için Visual Studio Code uygulaması kullanılmıştır. Bir vektöre eleman(lar) eklemek için delete() fonksiyonunun farklı kullanımları aşağıda gösterilmiştir.
Örnek-1: İlk öğe öğesini kaldırın
Vektörün başından bir öğeyi kaldırmak için aşağıdaki kodla bir C++ dosyası oluşturun. Kodda bir dizi değerleri vektörü kullanılmıştır. Vektörün değerleri, vektörden ilk eleman silinmeden önce ve sonra tek parametre ile delete() fonksiyonu kullanılarak yazdırılmıştır.
//Gerekli kitaplıkları dahil et#Dahil etmek
#Dahil etmek
kullanarak ad alanısaat;
// Vektörün değerlerini göster
geçersizdisplay_vector(vektör<sicim>meyveler)
{
//Sayacı başlat
inttezgah= 1;
// Döngü kullanarak vektörün öğelerini yineleyin ve yazdırın
için (Otoo=meyveler.başlamak();o!=meyveler.son();o++)
{
// Elemanların son eleman olup olmadığını kontrol edin
Eğer(tezgah!=meyveler.boy())
maliyet << *o<< ',';
Başka
maliyet << *o;
//Sayacı 1 artır
tezgah++;
}
maliyet <<son;
}
intana(geçersiz) {
// Dize verilerinin bir vektörünü bildir
vektör<sicim>meyveler= { 'Turuncu','Muz','Mango','Jack Meyve','Lichi' };
//Vektörün mevcut değerlerini yazdır
maliyet << 'Kaldırmadan önce vektörün değerleri:' <<son;
display_vector(meyveler);
// Vektörden ilk elemanı kaldır
meyveler.silmek(meyveler.başlamak());
//Vektörün mevcut değerlerini kaldırdıktan sonra yazdır
maliyet << ' Kaldırıldıktan sonra vektörün değerleri: ' <<son;
display_vector(meyveler);
dönüş 0;
}
Çıktı:
Yukarıdaki kodu çalıştırdıktan sonra aşağıdaki çıktı görünecektir.
Örnek-2: Birden çok öğeyi kaldırın
Silme() işlevini kullanarak vektörden birden çok öğeyi kaldırmak için aşağıdaki kodla bir C++ dosyası oluşturun. Kodda tamsayı değerlerinin bir vektörü kullanılmıştır. Vektörden kaldırılan öğelerin aralığını ayarlamak için burada iki yineleyici kullanılmıştır. Silme() işlevi, vektörden birden çok öğeyi kaldırmak için iki parametre ile kullanılmıştır.
//Gerekli kitaplıkları dahil et#Dahil etmek
#Dahil etmek
kullanarak ad alanısaat;
// Vektörü göster
geçersizdisplay_vector(vektör<int>sayılar)
{
// Döngü kullanarak vektörün değerlerini yazdır
için(Otoo=sayılarbaşlamak();o!=sayılarson() ;o++)
maliyet << *o<< '';
//Yeni satır ekle
maliyet << ' ';
}
intana() {
//Tamsayı verisi vektörü bildir
vektör<int>intArray{ 678,435,960,231,800,387,634,267,409,294};
//Vektörün mevcut değerlerini yazdır
maliyet << 'Kaldırmadan önce vektörün değerleri:' <<son;
display_vector(intArray);
//Öğe aralığını vektörden kaldırmak için iki yineleyici bildirin
vektör<int> :: yineleyicistartEle, endEle;
// Yineleyiciyi ilk konuma ayarla
startEle=intArray.başlamak();
//Başlangıç yineleyicisini 2 artır
ilerlemek(başlangıçEle,2);
// Yineleyiciyi son konuma ayarla
son Ele=intArray.son();
//Bitiş yineleyicisini 3 azalt
ilerlemek(sonEle,-3);
// Eleman aralığını kaldır
intArray.silmek(startEle, endEle);
//Vektörün mevcut değerlerini kaldırdıktan sonra yazdır
maliyet << ' Kaldırıldıktan sonra vektörün değerleri: ' <<son;
display_vector(intArray);
dönüş 0;
}
Çıktı:
Yukarıdaki kodu çalıştırdıktan sonra aşağıdaki çıktı görünecektir. Yineleyicilerin aralığına göre vektörün 3. konumundan 7. konumuna kadar olan elemanlar kaldırılmıştır.
Örnek-3: Belirli öğeleri kaldırın
Silme() işlevini kullanarak vektörün belirli öğelerini kaldırmak için aşağıdaki kodla bir C++ dosyası oluşturun. Kodda 7 tamsayı öğesinden oluşan bir vektör bildirildi. Daha sonra, vektör öğelerini yinelemek ve bu öğeleri vektörden 5'e bölünemeyen öğeleri çıkarmak için 'for' döngüsü kullanılmıştır.
//Gerekli kitaplıkları dahil et#Dahil etmek
#Dahil etmek
kullanarak ad alanısaat;
intana()
{
//Tamsayı verisi vektörü bildir
vektör<int>sayılar= { 78,Dört beş,67,25,98,75,52 };
maliyet << Kaldırmadan önce vektörün değerleri: ';
için (int const &ben:sayılar) {
maliyet <<ben<< '';
}
maliyet <<son;
// Vektörden 5'e bölünemeyen sayıları çıkarın
için (Otoo=sayılar.başlamak();o!=sayılar.son();o++)
{
//Sayının 5'e bölünüp bölünmediğini kontrol edin
Eğer (*o% 5 != 0)
{
// Yineleyiciye göre öğeyi kaldır
sayılar.silmek(o-);
}
}
maliyet << Kaldırıldıktan sonra vektörün değerleri: ';
için (int const &ben:sayılar) {
maliyet <<ben<< '';
}
maliyet <<son;
dönüş 0;
}
Çıktı:
Yukarıdaki kodu çalıştırdıktan sonra aşağıdaki çıktı görünecektir. Çıktı, vektörün yalnızca 5'e bölünebilen öğeleri içerdiğini ve diğer öğelerin kaldırıldığını gösterir.
Çözüm:
Vektör öğelerini kaldırmak için bu öğreticide delete() işlevinin farklı kullanımları gösterilmiştir. C++, öğeyi vektörden çıkarmak için birçok başka işleve sahiptir ve bu işlevler tek seferde tek öğeyi kaldırabilir. Ancak vektörün herhangi bir konumundan hem tekli hem de çoklu öğeler, vektör silme() işlevi kullanılarak kaldırılabilir.