C++ Std::Map::Erase Przykłady

C Std Map Erase Przyklady



Spośród wielu operacji dostępnych dla „std::map”, funkcja „erase” wyróżnia się jako kluczowe narzędzie do usuwania elementów na podstawie ich kluczy. „std::map” to zorganizowany kontener asocjacyjny składający się z par klucz-wartość. Rozmieszczenie elementów w „std::map” jest konsekwentnie sortowane według ich kluczy, co ułatwia skuteczne operacje, takie jak wyszukiwanie, wstawianie i usuwanie w oparciu o wartości kluczy.

W języku C++ funkcja „std::map::erase” pełni funkcję członkowską klasy „std::map”, umożliwiając eliminację określonych elementów z mapy. Występuje w różnych formach, zapewniając elastyczność w określaniu, które elementy mają zostać usunięte. W tym artykule zagłębimy się w szczegóły „std::map::erase”, podając wiele przykładów ilustrujących jego wszechstronność.







Przykład 1: Kasowanie za pomocą klucza

Możliwość usuwania elementów według klucza w „std::map” jest podstawową funkcją zapewnianą przez standardową bibliotekę szablonów C++. Ta operacja jest powszechnie używana, gdy trzeba zarządzać parami klucz-wartość i manipulować nimi w programie, a także zapewnia wygodny sposób usuwania określonych elementów na podstawie ich kluczy. Stworzymy przykład pokazujący, jak używać „std::map” do tworzenia mapy, usuwania elementu za pomocą klawisza, a następnie wyświetlania zmodyfikowanej mapy.



#include
#uwzględnij

int główny ( ) {
std::mapa < int, std::string > mojaMapa;
mojaMapa [ 1 ] = 'Czerwony' ;
mojaMapa [ 2 ] = 'Niebieski' ;
mojaMapa [ 3 ] = 'Zielony' ;

wymaż moją mapę ( 2 ) ;

Do ( stała auto & para: mojaMapa ) {
std::cout << para.pierwsza << „:” << para.sekunda << std::endl;
}

powrót 0 ;
}


W tym przykładzie zaczynamy od dołączenia niezbędnych bibliotek standardowych C++, takich jak i , aby umożliwić użycie odpowiednio operacji wejścia/wyjścia i kontenera „std::map”. W ramach funkcji „main” inicjujemy funkcję „std::map” o nazwie „myMap”, w której klucze całkowite są powiązane z odpowiednimi wartościami łańcuchowymi. Do mapy dodawane są trzy pary klucz-wartość, które reprezentują kolory: „Czerwony” dla klucza 1, „Niebieski” dla klucza 2 i „Zielony” dla klucza 3. Następnie używamy funkcji elementu „erase” elementu „ std::map”, aby usunąć element powiązany z kluczem 2 z naszej mapy. W związku z tym po tej operacji kolor „niebieski” nie będzie już częścią mapy.



Aby pokazać wynikowy stan mapy, stosujemy pętlę „for”, która iteruje po każdej parze klucz-wartość w „myMap”. Używamy obiektu „std::cout” wewnątrz pętli, aby wydrukować każdą parę klucz-wartość na konsoli. Na koniec instrukcja „return 0” kończy funkcję „main”, która sygnalizuje pomyślne wykonanie naszego programu.





Dane wyjściowe wyświetlają pozostałe pary klucz-wartość w „std::map” po usunięciu elementu z kluczem 2 („Niebieski”), co daje wynik „1: Czerwony” i „3: Zielony”.



Przykład 2: Kasowanie za pomocą Iteratora

W C++ iteratory to obiekty ułatwiające nawigację po elementach w kontenerze, oferujące środki dostępu, modyfikowania lub usuwania elementów. Funkcji „std::map::erase” można również używać z iteratorami w celu usuwania elementów.

Oto przykład:

#include
#uwzględnij

int główny ( ) {
std::mapa < int, std::string > folder owoców;
Folder owoców [ 1 ] = 'Mango' ;
Folder owoców [ 2 ] = 'Pomarańczowy' ;
Folder owoców [ 3 ] = 'Ananas' ;
Folder owoców [ 4 ] = 'Winogrona' ;

auto it = FruitMap.find ( 2 ) ;

Jeśli ( To ! = FruitMap.end ( ) ) {
Usuń mapę owoców ( To ) ;
}

Do ( stała auto & para: mapa owoców ) {
std::cout << para.pierwsza << „:” << para.sekunda << std::endl;
}

powrót 0 ;
}


Dostarczony kod C++ zaczyna się od zadeklarowania „std::map” o nazwie „fruitMap” do przechowywania par klucz-wartość, wiążących liczby całkowite z odpowiednimi nazwami owoców. Wypełniamy mapę wpisami dla czterech różnych owoców: „Mango”, „Pomarańcza”, „Ananas” i „Winogrona”. Następnie używamy funkcji „find”, aby uzyskać iterator (it), który wskazuje element o wartości klucza 2 w „fruitMap”. Następnie sprawdzamy, czy iterator nie jest równy „end()”, aby upewnić się, że element o podanym kluczu istnieje na mapie.

W bloku warunkowym usuwamy element, na który wskazuje iterator „it” za pomocą funkcji „kasuj”. Na koniec iterujemy po pozostałych elementach zmodyfikowanej „fruitMap”, używając pętli „for”.

Ostateczny wynik wyświetla zmodyfikowaną zawartość „fruitMap” po usunięciu.

Przykład 3: Kasowanie zakresu

Kontener „std::map” w C++ zapewnia wygodną metodę usuwania elementów w określonym zakresie. Funkcja „kasuj” umożliwia usuwanie elementów z mapy na podstawie iteratorów reprezentujących początek i koniec zakresu do usunięcia.

Przyjrzyjmy się teraz koncepcji wymazywania zakresu za pomocą „std::map” na przykładzie:

#include
#uwzględnij

int główny ( ) {
std::mapa < int, std::string > nowaMapa;
nowaMapa [ 1 ] = 'Koń' ;
nowaMapa [ 2 ] = 'Lew' ;
nowaMapa [ 3 ] = 'Tygrys' ;
nowaMapa [ 4 ] = 'Kot' ;

noweUsunięcie mapy ( newMap.lower_bound ( 2 ) , nowaMapa.upper_bound ( 3 ) ) ;

Do ( stała auto & para: nowaMapa ) {
std::cout << para.pierwsza << „:” << para.sekunda << std::endl;
}

powrót 0 ;
}


Program rozpoczyna się od zadeklarowania „std::map” o nazwie „newMap”, która kojarzy klucze całkowite z odpowiednimi wartościami łańcuchowymi. Następnie wypełniamy mapę parami klucz-wartość za pomocą operatora nawiasu kwadratowego. Na przykład przypisujemy pary klucz-wartość (1, „Koń”), (2, „Lew”), (3, „Tygrys”) i (4, „Kot”) do „newMap”.

Kolejna istotna operacja polega na użyciu iteratorów w celu usunięcia elementów z mapy. Funkcja kasowania jest używana z argumentami „newMap.lower_bound(2)” i „newMap.upper_bound(3)”. Spowoduje to usunięcie elementów z klawiszami mieszczącymi się w zakresie (2, 3). Innymi słowy, usuwa z mapy wpisy „Lew” i „Tygrys”. Po tej operacji na mapie znajdują się już tylko elementy z klawiszami 1 i 4, odpowiadające „Koniu” i „Kotowi”.

Na koniec używamy pętli „for” opartej na zakresie, aby iterować po pozostałych elementach mapy i drukować ich pary klucz-wartość na konsoli.

W rezultacie dane wyjściowe wyświetlają następujące informacje:

Przykład 4: Wymazywanie na podstawie predykatu

Wymazywanie w oparciu o predykat odnosi się do usuwania elementów ze struktury danych, takiej jak kontener, w oparciu o określony warunek lub kryteria. „std::map::erase” może być również użyte z funkcją predykatu, aby warunkowo usunąć elementy. Rozważmy następujący przykład:

#include
#uwzględnij
#include

int główny ( ) {

std::mapa < int, std::string > mojaMapa = {
{ 1 , 'Styczeń' } ,
{ 2 , 'Luty' } ,
{ 3 , 'Marsz' } ,
{ 4 , 'Kwiecień' } ,
{ 5 , 'Móc' }
} ;

automatyczny predykat = [ ] ( stała std::para < int, std::string >& element ) {
powrót element.drugi.długość ( ) < 5 ;
} ;

wymaż moją mapę ( std::usuń_if ( mojaMapa.begin ( ) , mojaMapa.koniec ( ) , orzeczenie ) , mojaMapa.koniec ( ) ) ;

std::cout << ' \N Mapa po usunięciu elementów na podstawie predykatu:” << std::endl;
Do ( stała auto & para: mojaMapa ) {
std::cout << para.pierwsza << „:” << para.sekunda << std::endl;
}

powrót 0 ;
}


Program rozpoczyna się od dołączenia niezbędnych plików nagłówkowych. Deklarowana jest „std::map” o nazwie „myMap” i inicjowana w funkcji „main”. Zawiera pary klucz-wartość, które reprezentują nazwy miesięcy i ich odpowiednie wartości liczbowe. Następnie definiowana jest funkcja „lambda” (predykat). Ta funkcja „lambda” służy jako predykat dla algorytmu „std::remove_if”. Sprawdza, czy długość ciągu znaków powiązanego z elementem mapy jest mniejsza niż pięć znaków.

Algorytm „std::remove_if” jest następnie używany w połączeniu z funkcją „kasowania” funkcji „std::map”. Ta kombinacja usuwa elementy z mapy na podstawie ważności predykatu.

Po uruchomieniu programu elementy z kluczami mniejszymi niż pięć są usuwane z oryginalnej mapy, demonstrując wymazywanie na podstawie predykatu za pomocą „std::map”.

Wniosek

Podsumowując, funkcja „std::map::erase” jest wszechstronnym narzędziem w C++ do usuwania elementów z „std::map”. Niezależnie od tego, czy usuwane są za pomocą klucza, iteratora, zakresu czy w oparciu o predykat, funkcja „std::map::erase” zapewnia elastyczność i łatwość użycia. Opanowując tę ​​​​funkcję, programiści C++ mogą efektywnie zarządzać danymi w kontenerach „std::map” i manipulować nimi, dzięki czemu ich kod jest silniejszy i łatwiejszy w utrzymaniu.