C++'da Vektör Silme() İşlevi

Vector Erase Function C



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.