Dyrektywy preprocesora
Typy proste arytmetyczne
Typ prosty wyliczeniowy
Operatory
Dev C++ - tworzenie projektu
Strumienie we/wy cin i cout
Funkcje obsługi we/wy printf i scanf
Kolory w konsoli
Instrukcja warunkowa if, else if oraz else
Instrukcja switch, case, default
Pętla for
Pętla for iterująca po zakresie dostępna w standardzie C++11
Pętla while i do while
Tablice statyczne i dynamiczne
Funkcje
Szablony funkcji
Argumenty funkcji main
Modyfikatory dostępu do wartości const i static
Obszary dostępu do zmiennych
Funkcje i stałe matematyczne
Generowanie liczb pseudo losowych za pomocą funkcji srand oraz rand
Struktury
Tworzenie własnej listy dwukierunkowej
Klasy
Szablony klas na przykładzie własnej kolejki LIFO (stosu)
Metody wirtualne, czysto wirtualne oraz klasy abstrakcyjne
Obsługa i przeciążanie operatorów klas
Rzutowanie typów kompatybilnych za pomocą static_cast
Rzutowanie w dół i rzutowanie w górę za pomocą funkcji dynamic_cast
Rzutowanie za pomocą funkcji reinterpret_cast
Kontener typu stack - stos
Kontener typu list
Kontener typu vector
Kontener typu map - tablica asocjacyjna
Kontener typu unordered_map - tablica asocjacyjna
Kontener typu set - zbiór
Kontener typu unordered_set - zbiór niesortowany
Sortowanie elementów kontenera vector
Klasa string
Funkcje związane z operacjami na łańcuchach znaków
Konwersja tekst - liczba
Operacje we/wy na plikach
Przeszukiwanie ścieżki w poszukiwaniu plików za pomocą funkcji _findfirst i _findnext
Własne pliki nagłówkowe .h
Polskie znaki w konsoli
Menu konsolowe z wykorzystaniem funkcji getch
Zmiana rozmiarów okna i bufora konsoli
Ta strona należy do działu:
Programowanie poddziału
Podstawy C++ Autor podstrony: Krzysztof Zajączkowski
Stronę tą wyświetlono już: 17872 razy
Wstęp
Deklaracja klasy map znajduje się w pliku nagłówkowym map . Klasa map jest klasą szablonową, która umożliwia ustawienie typu dla klucza i wartości przechowywanej . Cechą tej klasy jest jednoczesne sortowanie jej podczas dodawania kolejnych elementów albo za pomocą domyślnego porównywania binarnego albo za pomocą własnej klasy lub funkcji porównującej. Dodawanie elementów do tej klasy będzie więc powolniejsze ale dzięki temu zawsze dane będą posortowane.
Konstruktory klasy map
Podstawowy konstruktor klasy map wymaga jedynie określenia typu dla klucza i wartości przechowywanej . Oto prosty przykład:
std::map<std::string, int> mapExample;
Powyższy kod utworzył obiekt klasy map , który przyjmuje jako klucz obiekty klasy string zaś jako wartości przechowywane pod danym kluczem zmienne typu int .
Istnieje też konstruktor, który umożliwia skopiowanie zakresu danych innego obiektu tego samego typu:
std::map<std::string, int> mapExample;
std::map<std::string, int> mapExample2(mapExample.begin(), mapExample.end());
Powyższy kod w zasadzie nic nie przepisze bo obiekt mapExample nie zawiera elementów.
Konstruktor umożliwiający określenie zasady sortowania kluczy za pomocą klasy:
struct Compare{
bool operator () (const std::string &str1, const std::string &str2) const{
return str1.compare(str2) > 0;
}
};
std::map<std::string, int, Compare> mapExample;
W powyższym kodzie struktura Compare dostarcza obsługę operatora porównania dla sortowania elementów w odwrotnej kolejności podczas ich dodawania.
Istnieje jeszcze jeden sposób ustawienia sposobu sortowania za pomocą funkcji:
bool compare(std::string str1, std::string str2){
return str1.compare(str2) > 0;
}
std::map<std::string, int, bool (*)(std::string, std::string)> mapExample(compare);
Dodawanie elementów do obiektu klasy map
Dodawanie elementów jest banalnie proste i odbywa się przy pomocy operatora [] w następujący sposób:
std::map<std::string, int> mapExample;
mapExample["key 1"] = 1;
mapExample["key 2"] = 2;
Sprawdzanie, czy dany klucz istnieje
Za pomocą metody find można sprawdzić, czy dany klucz istnieje. Metoda ta znajduje dany klucz i zwraca do niego wskaźnik lub zwraca wskaźnik na koniec listy. Oto przykład:
std::map<std::string, int> mapExample;
mapExample["key 1"] = 1;
mapExample["key 2"] = 2;
if(mapExample.find("key 1") == mapExample.end()){
std::cout << "Key not exist!" << std::endl;
}
Iterowanie po elementach obiektu klasy map
Oto jak można iterować po elementach klasy map wykorzystując wskaźnik zawierający pola first (klucz); second (wartość). Oto przykład:
std::map<std::string, int> mapExample(compare);
mapExample["key 1"] = 1;
mapExample["key 2"] = 2;
for(std::map<std::string, int, Compare>::iterator element = mapExample.begin(); element != mapExample.end(); element ++){
std::cout << element->first << ": " << element->second << std::endl;
}
Usuwanie elementów z obiektu klasy map
Metoda erase umożliwia usunięcie jednego elementu lub zakresu elementów z tablicy. Możliwe jest to poprzez podanie wskaźnika lub wskaźników (w przypadku usuwania zakresu danych) na elementy zawarte wewnątrz tejże klasy w następujący sposób:
std::map<std::string, int> mapExample(compare);
mapExample["key 1"] = 1;
mapExample["key 2"] = 2;
mapExample.erase(mapExample.begin(), mapExample.end());
Możliwe jest również posłużenie się wartościami kluczy:
std::map<std::string, int> mapExample(compare);
mapExample["key 1"] = 1;
mapExample["key 2"] = 2;
mapExample.erase(std::string("key 1"));
Możliwe jest również usunięcie wszystkich elementów za pomocą metody clear .
Sprawdzanie, czy obiekt klasy map jest pusty
Metoda empty zwraca prawdę, gdy obiekt nie zawiera żadnych elementów.
Pozyskiwanie informacji o liczbie elementów zawartych w obiekcie klasy map
Metoda size zwraca liczbę elementów w niej zawartych.
Strony powiązane
Tematy powiązane