C++ Std::Map::Erase Örnekleri

C Std Map Erase Ornekleri



“std::map” için mevcut birçok işlem arasında “sil” fonksiyonu, elemanların anahtarlarına göre silinmesi için çok önemli bir araç olarak öne çıkıyor. Bir 'std::map', anahtar/değer çiftlerinden oluşan organize bir ilişkisel kapsayıcıdır. Bir 'std::map' içindeki öğelerin düzeni, anahtarlarına göre tutarlı bir şekilde sıralanır ve anahtar değerlere dayalı olarak arama, ekleme ve silme gibi etkili işlemleri kolaylaştırır.

C++ alanında, 'std::map::erase' işlevi, 'std::map' sınıfının bir üye işlevi olarak hizmet eder ve haritadan belirli öğelerin ortadan kaldırılmasını sağlar. Hangi öğelerin silineceğini belirlemede esneklik sağlayan çeşitli biçimlerde gelir. Bu makalede, “std::map::erase”in ayrıntılarını inceleyeceğiz ve çok yönlülüğünü göstermek için birden fazla örnek sunacağız.







Örnek 1: Anahtara Göre Silme

'std::map' içindeki öğeleri anahtara göre silme yeteneği, C++ Standart Şablon Kitaplığı tarafından sağlanan temel bir özelliktir. Bu işlem genellikle bir programdaki anahtar/değer çiftlerini yönetmeniz ve değiştirmeniz gerektiğinde kullanılır ve belirli öğeleri anahtarlarına göre kaldırmak için uygun bir yol sağlar. Bir harita oluşturmak, bir öğeyi anahtarla silmek ve ardından değiştirilmiş haritayı görüntülemek için “std::map”in nasıl kullanılacağını göstermek için bir örnek oluşturacağız.



#include
#include

int ana ( ) {
std::harita < int, std::string > haritam;
haritam [ 1 ] = 'Kırmızı' ;
haritam [ 2 ] = 'Mavi' ;
haritam [ 3 ] = 'Yeşil' ;

myMap.erase ( 2 ) ;

için ( sabit otomatik & çift: myMap ) {
std::cout << çift.ilk << ': ' << çift.saniye << std::endl;
}

geri dönmek 0 ;
}


Bu örnekte, giriş/çıkış işlemlerinin ve “std::map” konteynerinin kullanımını sağlamak için sırasıyla ve gibi gerekli C++ standart kütüphanelerini dahil ederek başlıyoruz. “Main” fonksiyonu içerisinde, tamsayı anahtarlarının karşılık gelen string değerleriyle ilişkilendirildiği “myMap” adlı “std::map”i başlatıyoruz. Haritaya renkleri temsil eden üç anahtar/değer çifti eklenir: Anahtar 1 için “Kırmızı”, anahtar 2 için “Mavi” ve anahtar 3 için “Yeşil”. Daha sonra “sil” üye fonksiyonunu kullanırız. Anahtar 2 ile ilişkili öğeyi haritamızdan kaldırmak için std::map” sınıfını kullanacağız. Sonuç olarak, bu işlemden sonra “Mavi” renk artık haritanın bir parçası değildir.



Haritanın ortaya çıkan durumunu göstermek için, 'myMap' içindeki her bir anahtar/değer çifti boyunca yinelenen bir 'for' döngüsü kullanıyoruz. Her bir anahtar/değer çiftini konsola yazdırmak için döngü içindeki “std::cout” nesnesini kullanırız. Son olarak “return 0” ifadesi, programımızın başarılı bir şekilde yürütüldüğünü gösteren “main” fonksiyonunu sonlandırır.





Çıkış, anahtar 2'ye ('Mavi') sahip öğe silindikten sonra 'std::map' içinde kalan anahtar/değer çiftlerini görüntüler, bu da '1: Kırmızı' ve '3: Yeşil' çıkışıyla sonuçlanır.



Örnek 2: Yineleyiciyle Silme

C++'da yineleyiciler, bir kapsayıcı içindeki öğelerin gezinmesini kolaylaştıran, öğelere erişme, bunları değiştirme veya kaldırma için bir araç sunan nesnelerdir. Öğeleri kaldırmak için yineleyicilerle birlikte “std::map::erase” işlevi de kullanılabilir.

İşte bir örnek:

#include
#include

int ana ( ) {
std::harita < int, std::string > meyveKlasörü;
meyveKlasörü [ 1 ] = 'Mango' ;
meyveKlasörü [ 2 ] = 'Turuncu' ;
meyveKlasörü [ 3 ] = 'Ananas' ;
meyveKlasörü [ 4 ] = 'Üzüm' ;

otomatik it = meyveMap.find ( 2 ) ;

eğer ( BT ! = meyveMap.end ( ) ) {
meyve Haritası.erase ( BT ) ;
}

için ( sabit otomatik & çift ​​: meyve Haritası ) {
std::cout << çift.ilk << ': ' << çift.saniye << std::endl;
}

geri dönmek 0 ;
}


Sağlanan C++ kodu, anahtar/değer çiftlerini depolamak için 'fruitMap' adında bir 'std::map' bildirerek başlar ve tamsayıları karşılık gelen meyve adlarıyla ilişkilendirir. Haritayı dört farklı meyvenin girişleriyle dolduruyoruz: 'Mango', 'Portakal', 'AnamElma' ve 'Üzüm'. Daha sonra “fruitMap” içerisinde anahtar değeri 2 olan öğeye işaret eden bir yineleyici (it) elde etmek için “find” fonksiyonunu kullanıyoruz. Daha sonra belirtilen anahtara sahip elemanın haritada mevcut olduğundan emin olmak için yineleyicinin “end()” değerine eşit olup olmadığını kontrol ederiz.

Koşullu blokta, “it” yineleyicisinin işaret ettiği öğeyi “erase” fonksiyonunu kullanarak sileriz. Son olarak, değiştirilmiş 'fruitMap'teki geri kalan öğeleri bir 'for' döngüsü kullanarak yineliyoruz.

Son çıktı, silme işleminden sonra değiştirilen “fruitMap” içeriğini görüntüler.

Örnek 3: Bir Aralığın Silinmesi

C++'daki “std::map” kapsayıcısı, belirli bir aralıktaki öğeleri silmek için uygun bir yöntem sağlar. 'Silme' işlevi, silinecek aralığın başlangıcını ve sonunu temsil eden yineleyicilere dayalı olarak öğeleri haritadan kaldırmanıza olanak tanır.

Şimdi “std::map” kullanarak bir aralığı silme kavramını bir örnekle inceleyelim:

#include
#include

int ana ( ) {
std::harita < int, std::string > yeni Harita;
yeniHarita [ 1 ] = 'Atış' ;
yeniHarita [ 2 ] = 'Aslan' ;
yeniHarita [ 3 ] = 'Kaplan' ;
yeniHarita [ 4 ] = 'Kedi' ;

yeniHarita.erase ( yeniMap.lower_bound ( 2 ) , newMap.upper_bound ( 3 ) ) ;

için ( sabit otomatik & çift: yeni Harita ) {
std::cout << çift.ilk << ': ' << çift.saniye << std::endl;
}

geri dönmek 0 ;
}


Program, tamsayı anahtarlarını karşılık gelen dize değerleriyle ilişkilendiren 'newMap' adlı bir 'std::map' bildirerek başlar. Bundan sonra haritayı köşeli parantez operatörünü kullanarak anahtar/değer çiftleriyle dolduruyoruz. Örneğin, (1, “At”), (2, “Aslan”), (3, “Kaplan”) ve (4, “Kedi”) anahtar/değer çiftlerini “newMap”e atarız.

Bir sonraki önemli işlem, öğeleri haritadan silmek için yineleyicilerin kullanılmasını içerir. Silme işlevi “newMap.lower_bound(2)” ve “newMap.upper_bound(3)” argümanlarıyla kullanılır. Bu, (2, 3) aralığına giren tuşların bulunduğu öğeleri siler. Yani “Aslan” ve “Kaplan” girişlerini haritadan kaldırır. Bu işlemden sonra harita yalnızca “At” ve “Kedi”ye karşılık gelen 1 ve 4 tuşlarına sahip elemanları içerir.

Son olarak, haritada kalan öğeler arasında yineleme yapmak ve bunların anahtar/değer çiftlerini konsola yazdırmak için aralık tabanlı bir 'for' döngüsü kullanırız.

Sonuç olarak çıktı aşağıdakileri görüntüler:

Örnek 4: Bir Tahmine Dayalı Silme

Bir yüklemi temel alarak silme, belirli bir koşula veya kritere göre kap gibi bir veri yapısından öğelerin kaldırılmasını ifade eder. “std::map::erase”, öğeleri koşullu olarak kaldırmak için bir yüklem işleviyle birlikte de kullanılabilir. Aşağıdaki örneği ele alalım:

#include
#include
#include

int ana ( ) {

std::harita < int, std::string > Haritam = {
{ 1 , 'Ocak' } ,
{ 2 , 'Şubat' } ,
{ 3 , 'Mart' } ,
{ 4 , 'Nisan' } ,
{ 5 , 'Mayıs' }
} ;

otomatik yüklem = [ ] ( const std::pair < int, std::string >& eleman ) {
geri dönmek eleman.ikinci.uzunluk ( ) < 5 ;
} ;

myMap.erase ( std::remove_if ( myMap.begin ( ) , myMap.end ( ) , yüklem ) , myMap.end ( ) ) ;

std::cout << ' \N Yüklemi temel alan öğeleri sildikten sonra harita:' << std::endl;
için ( sabit otomatik & çift: myMap ) {
std::cout << çift.ilk << ': ' << çift.saniye << std::endl;
}

geri dönmek 0 ;
}


Program gerekli başlık dosyalarını ekleyerek başlar. 'myMap' adı verilen bir 'std::map', 'main' işlevinde bildirilir ve başlatılır. Ayların adlarını ve ilgili sayısal değerlerini temsil eden anahtar/değer çiftlerini içerir. Daha sonra bir “lambda” fonksiyonu (yüklem) tanımlanır. Bu 'lambda' işlevi, 'std::remove_if' algoritması için bir yüklem görevi görür. Bir harita öğesiyle ilişkili dize değerinin uzunluğunun beş karakterden az olup olmadığını doğrular.

Daha sonra 'std::remove_if' algoritması 'std::map'in 'sil' işleviyle birlikte kullanılır. Bu kombinasyon, yüklemin geçerliliğine bağlı olarak öğeleri haritadan kaldırır.

Programı çalıştırdıktan sonra, tuşları beşten küçük olan öğeler orijinal haritadan kaldırılır, bu da 'std::map' kullanılarak bir yüklem temelinde silme işlemini gösterir.

Çözüm

Sonuç olarak, 'std::map::erase' işlevi, C++'da 'std::map' öğesinden öğeleri kaldırmak için kullanılan çok yönlü bir araçtır. İster tuşa, yineleyiciye, aralığa göre ister bir yüklemeye dayalı olarak silme olsun, 'std::map::erase' işlevi esneklik ve kullanım kolaylığı sağlar. Bu fonksiyonda uzmanlaşarak, C++ geliştiricileri 'std::map' kapsayıcıları içindeki verileri verimli bir şekilde yönetebilir ve işleyebilir, böylece kodlarını daha güçlü ve bakımı daha kolay hale getirebilirler.