Do dwóch podstawowych celów programistów C ++ mogą uznać, że struktura map. Po pierwsze, za pomocą klucza mapa umożliwia szybką i łatwą dostępność wartości. Tworzenie dowolnego rodzaju indeksu lub wskaźnika może skorzystać z tego atrybutu. Klucz musi być wyjątkowy w całej zintegrowanej strukturze danych, które mapa zapewnia. Zapobiega to powielaniu danych; Dlatego jest to kolejna korzyść z korzystania z mapy.
Na przykład, jeśli tworzysz aplikację handlową i musisz zachować wartości zasobów za pomocą znaku tickera, mapa jest użytecznym podejściem z powodu tych dwóch korzyści. Mapa byłaby wydajną metodą zapewnienia i sprawdzania istniejącej pogody w wielu miastach na całym świecie, gdybyśmy opracowali aplikację pogodową. Prawdopodobnie użyjemy mapy na rynku internetowym, aby zlokalizować produkty według marek lub kategorii."
Kiedy uniknąć używania mapy C ++?
Funkcja MAP C ++ jest odpowiednia do wydajnego lokalizowania wartości według klucza. Ale znalezienie elementów mapy za pomocą liczby całkowitej obejmuje przemieszczenie pełnej mapy. Iteracja przez mapę może stać się czasochłonne, ponieważ mapa rośnie rozmiar, jeśli chcielibyśmy być w stanie zlokalizować w niej wartości. Moduł BOOST zapewnia mapę dwukierunkową, co czyni go bardziej skutecznym, gdy często pobieramy dane. Ponieważ standardowy moduł C ++ nie zawiera tego modelu danych, użytkownik musi albo uzyskać bibliotekę Boost na każdym komputerze, na którym program jest wykonywany, albo zintegrować pakiet Boost w ramach łączenia statycznego.
Mapa może nie być najlepszą strukturą do zastosowania, jeśli zdamy sobie sprawę, że musimy znaleźć mapę według elementu w prostej aplikacji. Użyj tablicy C ++, bufora, stosu lub dowolnego innego typu danych, które mogą ułatwić zrozumienie aplikacji i bardziej skuteczne.
Omówmy działanie funkcji map w C++.
Przykład nr 1
W tym przypadku uruchomimy kod, aby pokazać, jak zaimplementować funkcje mapy. Możemy iterować komponenty mapy. Aby to zrobić, musimy tylko skonstruować iterator, a następnie go użyć.
#włączać
#włączać
#włączać
za pomocą przestrzeni nazw Std;
int main ()
mapaprzypisanie1;
przypisanie1.Wstaw (para(2, 60));
przypisanie1.Wstaw (para(4, 80));
przypisanie1.Wstaw (para(6, 70));
przypisanie1.Wstaw (para(8, 90));
przypisanie1.Wstaw (para(10, 50));
przypisanie1.Wstaw (para(12, 80));
przypisanie1 [14] = 40;
mapa:: Iterator ITR;
Cout << "\nThe map of the assignment1 is : \n";
Cout << "\tKEY\tELEMENT\n";
for (ITR = przypisanie1.zaczynać(); ITR != przypisanie1.koniec(); ++ ITR)
Cout << '\t' << itr->Pierwszy << '\t' << itr->drugi
<< '\n';
Cout << endl;
mapaprzypisanie2 (przypisanie1.początek (), przypisanie1.koniec());
Cout << "\nThe map of the assignment2 after"
<< " assign from assignment1 is : \n";
Cout << "\tKEY\tELEMENT\n";
for (iTr = przypisanie2.zaczynać(); ITR != przypisanie2.koniec(); ++ ITR)
Cout << '\t' << itr->Pierwszy << '\t' << itr->drugi
<< '\n';
Cout << endl;
Tutaj zamierzamy zintegrować wymagane pliki nagłówka. i na początku kodu. Teraz wywołujemy funkcję Main (). Użyjemy polecenia mapy. W ramach tego polecenia inicjujemy dwie liczby całkowite. Teraz musimy wstawić różne losowe wartości elementów. Więc używamy funkcji insert ().
Argument „para” będzie miała dwie liczby całkowite. Określamy wartości 6 różnych przypisań. Teraz musimy wykorzystać inną metodę wprowadzania wartości na mapie. Następnie wydrukujemy przypisanie mapy za pomocą polecenia mapy. Wraz z tym używamy iteratora. Instrukcja „cout” jest używana do wydrukowania linii. Wtedy instrukcja „cout” zostanie użyta do pokazania kluczy i elementów. Następnie wykonujemy przyrost wartości „ITR”. Następnie użyjemy instrukcji „Cout”. Stworzyliśmy wskaźnik, który wskazuje na iterator. Użyjemy terminu „ENDL” do kodowania w następnym wierszu.
Teraz przypisujemy elementy z przypisania1 do przypisania2. Ponownie użyjemy polecenia mapy. Wraz z tym wykorzystaliśmy przypisanie funkcji początkowe () i end (). Funkcje te są używane do uruchamiania i zakończenia wartości przypisania1. Teraz zademonstrujemy wszystkie elementy potrzebnej mapy. Instrukcja „cout” zostanie zastosowana do wydrukowania wiersza „Mapa przypisania2 po przypisaniu z przypisania1 IS”. Następnie „cout” służy do pokazania kluczy i elementów.
Jeszcze raz stosujemy pętlę „for”. Musimy zaspokoić ten stan. Następnie wykonujemy przyrost w iteratorze. Skonstruujemy wskaźnik pierwszego i drugiego elementów przypisania1. Aby rozpocząć kod z nowej linii, używamy „ENDL”. Teraz usuniemy wszystkie elementy do elementu o wartości kluczowej „3” w przypisaniu1.
Cout << "\nassignment2 after eliminating the "
„Elementy mające kluczową wartość mniejszą niż 3: \ n”;
Cout << "\tKEY\tELEMENT\n";
przypisanie2.usuń (przypisanie2.początek (), przypisanie2.znaleźć (3));
for (iTr = przypisanie2.zaczynać(); ITR != przypisanie2.koniec(); ++ ITR)
Cout << '\t' << itr->Pierwszy << '\t' << itr->drugi
<< '\n';
int n;
n = przypisanie2.usunąć (4);
Cout << "\nassignment2.erase(4) : ";
Cout << n << " removed \n";
Cout << "\tKEY\tELEMENT\n";
for (iTr = przypisanie2.zaczynać(); ITR != przypisanie2.koniec(); ++ ITR)
Cout << '\t' << itr->Pierwszy << '\t' << itr->drugi
<< '\n';
Cout << endl;
Cout << "assignment1.lower_bound(10) : "
<< "\tKEY = ";
Cout << assignment1.lower_bound(10)->Pierwszy << '\t';
Cout << "\tELEMENT = " << assignment1.lower_bound(10)->drugi
<< endl;
Cout << "assignment1.upper_bound(10) : "
<< "\tKEY = ";
Cout << assignment1.upper_bound(10)->Pierwszy << '\t';
Cout << "\tELEMENT = " << assig>Nment1.Upper_Bound (10)-> sekunda
<< endl;
powrót 0;
Oświadczenie „cout” jest stosowane do wydrukowania oświadczenia „przypisanie22 po wyeliminowaniu elementów o wartości kluczowej mniejszej niż 3”. Instrukcja „cout” również drukuje klucze i ich wartości. Zastosowaliśmy funkcję Erase (). Tutaj używamy metody początkowej (). Z powodu tej funkcji rozpoczyna kluczowe wartości przypisania2. Następnie musimy wykorzystać metodę Find (), aby uzyskać element na mapie. Używamy funkcji początku () i end (), która jest powiązana z iteratorem. Następnie konstruujemy wskaźnik pierwszego i drugiego elementu iteratora i używamy instrukcji „Cout” do wydrukowania tych wartości.
Teraz chcemy wyeliminować element, który ma kluczową wartość 4. W ten sposób musimy zainicjować zmienną „N”. Typ danych tej zmiennej to liczba całkowita. Następnie będziemy używać funkcji Erase (). Ta funkcja zawiera parametr wartości, którą chcemy usunąć. Instrukcja „cout” zostanie użyta do usunięcia tego elementu. Po raz kolejny używamy pętli „for” i wskaźnika iteratora. Wydrukujemy dolną granicę i górną granicę mapy dla przypisania 1 za pomocą instrukcji „Cout”.
W następnym wierszu wykorzystamy instrukcję „Cout”, aby utworzyć wskaźnik, który wskazuje drugą wartość przypisania1. Wprowadzamy również słowo kluczowe „ENDL”, aby przejść do następnego wiersza kodowania. Teraz zostanie wywołana metoda npliste_bound () przypisania1. Wskaźnik zostanie utworzony, aby wskazać drugą wartość górnej granicy przypisania1.
Przykład nr 2
W tej ilustracji wartość kluczowa i wartość połączona z kluczem mają różne typy danych. Nie można skonfigurować wartości pojedynczo; Muszą być dostarczane w parach.
#włączać
#włączać
#włączać
#włączać
za pomocą przestrzeni nazw Std;
int main ()
mapaPracownicy;
Pracownicy [221] = „Anikaa”;
Pracownicy [320] = „Zeeshan”;
Pracownicy [345] = „Daniyal”;
Pracownicy [237] = „Dania”;
Pracownicy [189] = „Azka”;
Cout << "Workers[190]=" << Workers[237] << endl << endl;
Cout << "Size of the map: " << Workers.size() << endl;
Cout << endl << "The Original Order:" << endl;
for (map :: iterator jj = pracownicy.zaczynać(); JJ!= Pracownicy.koniec(); ++ jj)
Cout << (*jj).first << ": " << (*jj).second << endl;
Cout << endl << "The Inverse Order:" << endl;
dla (mapa :: reverse_iterator jj = pracownicy.rbegin (); JJ!= Pracownicy.rozdzierać(); ++ jj)
Cout << (*jj).first << ": " << (*jj).second << endl;
Na początku programu dołączymy cztery ważne biblioteki, w tym, i i . W końcu standardowa przestrzeń nazw będzie używana jako STD. Konstruujemy mapę pracowników. Zapewnimy dwa typy danych jako argumenty mapy. Typ danych obejmuje liczbę całkowitą i ciąg. Teraz zamierzamy przypisać identyfikatory odpowiednio pracownikom. Korzystamy z formatu indeksu tablicy do alokacji wartości. Oświadczenie „cout” jest używane do pokazania nazwy pracownika, którego identyfikatorem jest 190.
Ponadto używamy instrukcji „cout” do wyświetlenia rozmiaru mapy. Rozmiar zostanie wydrukowany po instrukcji „Rozmiar mapy”. Następnie do wyświetlania oryginalnej kolejności identyfikatorów zostanie użyta instrukcja „Cout. W środku dla pętli użyjemy polecenia „mapa”. Zainicjujemy ciąg i iterator. Następnie uruchamiamy mapę pracowników za pomocą metody początkowej (). Aby zakończyć mapę pracowników, używamy funkcji end ().
W ostatniej części pętli „for” zwiększyliśmy wartość iteratora. Oświadczenie „cout” zostanie użyte do pokazania elementów mapy. Następnie ponownie użyjemy instrukcji „Cout”, aby pokazać wiersz „Zakon odwrotnej”. Wykorzystamy metodę początkowa () i end () do uruchamiania i zakończenia elementów mapy. Będziemy iterować elementy, dopóki warunek nie zostanie spełniony. Ostatecznie instrukcja „cout” służy do drukowania elementów w odwrotny sposób.
Przykład nr 3
Kilka funkcji mapy są używane w następnym programie. Przed iterowaniem takiej wartości, która pasuje do określonego klucza, początkowo dodaje inne elementy do mapy.
#włączać
#włączać
#włączać
#włączać
za pomocą przestrzeni nazw Std;
int main ()
mapaStd;
Std.wstaw (std :: para(736, „Jamil”));
Std.wstaw (std :: para(233, „dua”));
Std.wstaw (std :: para(837, „Aima”));
Std [348] = „snobar”;
Std [646] = „tania”;
Cout << "Map Size: " << Std.size() << endl << endl;
Cout << endl << "Real order of the values:" << endl;
for (map :: iterator iter = std.zaczynać(); iter!= Std.koniec(); ++ ITER)
Cout << (*iter).first << ": " << (*iter).second << endl;
STD :: mapa:: iterator it = std.znaleźć (348);
Jeśli to != Std.koniec())
STD :: Cout <" << Std.find(348)->drugi << '\n';
Przede wszystkim włączymy pliki nagłówka. Plik nagłówka dotyczy ciągów w kodzie. Plik nagłówka dotyczy funkcji wejściowych i wyjściowych. Plik nagłówka dotyczy mapy. A ostatni plik nagłówka dotyczy funkcji użyteczności. Rozpocznijmy kodowanie w treści funkcji Main () 0f. Uruchomimy polecenie „mapa”. Za pomocą tego zainicjujemy mapę według kluczy i ich odpowiednich wartości. Typ danych klawiszy jest liczbą całkowitą, a typem danych ich wartości to „ciąg”.
Teraz wstawymy znaki i nazwiska uczniów na mapie za pomocą funkcji Insert (). Używamy tej funkcji, aby dodać dane trzech uczniów. Następnie użyjemy formatu indeksu tablicy do wstawienia znaków i nazwisk uczniów. Dane dwóch uczniów zostaną wstawione za pomocą formatu indeksu tablicy.
Ponadto zastosujemy metodę „cout”. Instrukcja „Cout” wyświetla linię „Rozmiar mapy” na ekranie przed mapą. W ramach tej instrukcji „cout” użyjemy metody size (). Teraz pokażemy nazwiska i liczby uczniów w oryginalnym formacie. Instrukcja „cout” jest używana do drukowania tekstu „prawdziwa kolejność wartości”. Korzystamy z polecenia „ENDL” po obu stronach tego tekstu, aby wydrukować ten tekst w osobnym wierszu. Teraz używamy pętli „for”. Wykorzystamy również funkcję początku (), aby rozpocząć drukowanie imienia i znaki ucznia na mapie.
Podobnie metoda end () jest używana do pokazania nazwiska ucznia na mapie. Oświadczenie „cout” pokaże te pierwsze i ostatnie wartości. Na końcu programu użyjemy innej funkcji mapy, aby znaleźć (). Chcemy odkryć nazwę ucznia, którego liczba to 348. Więc nazwiemy metodę Find (). Używamy std :: mapa i std :: iterator. Następnie używamy warunku „jeśli”. Stosujemy funkcję mapy end (), aby spełnić warunek „jeśli”. Aby wydrukować nazwisko ucznia, którego oceny to 348, zastosujemy metodę STD :: Cout. Tworzymy również wskaźnik, który wskazuje na drugą wartość mapy.
Wniosek
Omówiliśmy mapę C ++ i sposób korzystania z funkcji map w tym artykule. Krótko pokazaliśmy dodawanie elementów i pobieranie ich za pomocą mapy w różnych przykładach. Mapy są składnikiem standardowej biblioteki szablonów. Mapy to gniazda asocjacyjne, które zawierają uporządkowane pary wartości kluczowej; Prawie każdy klucz jest odrębny i może być tylko dodawany lub całkowicie usuwany. Kluczowe wartości mogą mieć swoje powiązane wartości, które zostaną zmodyfikowane. Na mapie zdefiniowane wartości utrzymują dane dotyczące klucza, podczas gdy wartości kluczowe są zwykle wykorzystywane do układania i identyfikacji określonych komponentów.