Stronę tą wyświetlono już: 2806 razy
Kontener typu QMap umożliwia przechowywanie wartości w parach klucz → wartość. Jest więc to odpowiednik tablicy asocjacyjnej z języków skryptowych. Odpowiednikiem tego kontenera jest omówiony na stronie Programowanie → Podstawy C++ → Kontener typu map - tablica asocjacyjna. Wadą i zaletą (w zależności od kryteriów użycia) tego kontenera jest sposób organizacji danych, który sprawia, że dodawanie kolejnych elementów jest czasochłonne. Dzieje się tak dlatego, że dodawane elementy są jednocześnie sortowane z wykorzystaniem struktury kopca. Zaletą takiego rozwiązania jest bardzo szybkie odnajdowanie określonego elementu.
Dodawanie elementów
Już na etapie tworzenia obiektu klasy QMap można przypisać mu wartości gdy wykorzystywany jest tryb kompilowania w standardzie C++ 11:
Dodawanie kolejnych elementów może się odbywać np. tak:
Powyższy kod wyświetli:
QMap(("key1", 200)("key2", 300)("key3", 500)("key4", 400))
Pozyskiwanie informacji o liczbie elementów zawartych
Istnieją dwie metody length i size, które zwracają liczbę elementów zawartych w obiekcie klasy QMap.
Iterowanie po elementach klasy QMap
Iterowanie w stylu C++ 11 umożliwia w wydajny sposób dostęp jedynie do wartości:
Wynik działania powyższego kodu:
200 300
Dużo lepszym sposobem jest iterowanie z wykorzystaniem wskaźnika:
Jak widać tutaj mam dostęp do klucza i wartości za nim stojącej. Wynik działania powyższego kodu będzie więc następujący:
"key1" = 200 "key2" = 300
Można też iterować w następujący sposób:
Wynik działania powyższego kodu:
"key1" = 200 "key2" = 300
Metody zwracające listę kluczy lub wartości
Metoda keys i values zwracają odpowiednio listę QList zawierającą klucze lub wartości. Oto przykład użycia tych metod:
Wynik działania powyższego kodu:
keys: ("key1", "key2") values: (200, 300)
Usuwanie elementów
Metoda remove umożliwia usunięcie klucza wraz z wartością za nim stojącą:
Wynik działania powyższego kodu:
QMap(("key1", 200)("key2", 300)) QMap(("key1", 200))
Z kolei metodą clear można usunąć wszystkie elementy zawarte wewnątrz obiektu klasy QMap.
Zdejmowanie elementu stojącego za podanym kluczem i zwrócenie jego wartości
Metoda take usuwa dany klucz i zwraca jego wartość:
Wynik działania powyższego kodu:
QMap(("key1", 200)("key2", 300)) Take key2 value: 300 After take key2 value QMap(("key1", 200))
Zamiana miejscami zawartości dwóch obiektów klasy QMap
Metoda swap zamienia miejscami elementy dwóch obiektów klas QMap. Oto przykład:
Wynik działania powyższego kodu:
Before swap map: QMap(("key1", 200)("key2", 300)) map2 QMap(("key3", 400)("key4", 500)) After swap map: QMap(("key3", 400)("key4", 500)) map2 QMap(("key1", 200)("key2", 300))