Stronę tą wyświetlono już: 1957 razy
Kontener typu QSet przeznaczony jest do przechowywania zbiorów danych, czyli takich elementów, które w danym zbiorze są niepowtarzalne. Odpowiednikiem tego kontenera jest wcześniej omawiany kontener typu set, który omawiany był na stronie Programowanie → Podstawy C++ → Kontener typu set - zbiór. Warto też mieć na uwadze kontener w wersji niesortowanej czyli unordered_set omawiany na stronie Programowanie → Podstawy C++ → Kontener typu unordered_set - zbiór niesortowany.
Tego typu kontenery są przydatne, gdy zachodzi konieczność np. uzyskania zbioru niepowtarzalnych elementów znajdujących się np w jakiejś tablicy lub kontenerze. Oto przykład:
Wynik działania powyższego kodu:
Imiona: ("Arnold", "Ania", "Kasia", "Adam", "Mirek", "Ewa", "Kasia", "Zenek", "Maciek", "Wiesław", "Adam", "Mirek", "Damian") Niepowtarzalne imiona: QSet("Maciek", "Wiesław", "Adam", "Mirek", "Ania", "Ewa", "Zenek", "Arnold", "Kasia", "Damian")
Dodawanie elementów
Możliwe jest przypisanie elementów zbioru w stylu C++ 11:
Wynik działania powyższego kodu:
QSet("alpha", "betha")
Możliwe jest również dodanie nowego elementu za pomocą metody insert:
Wynik działania powyższego kodu:
QSet("alpha", "betha") QSet("alpha", "betha", "delta")
Można też dodawać kolejne elementy za pomocą operatora dodawania + lub dodawania z podstawieniem += w następujący sposób:
Co spowoduje wyświetlenie:
QSet("epsilon", "alpha", "betha", "eta", "delta")
Ten sam efekt można uzyskać w następujący sposób:
Pozyskiwanie informacji o liczbie elementów
Metoda size zwraca liczbę elementów zawartych w obiekcie klasy QSet.
Operacje na zbiorach
Zbiory można dodawać, odejmować oraz obliczać część wspólną zbiorów. Oto przykład wykonywania tego typu operacji na zbiorach:
Wynik działania powyższego kodu:
zbior 1: QSet("alpha", "betha", "delta", "eta", "epsilon") zbior 2: QSet("alpha", "gamma") czesc wspolna dwoch zbiorow: QSet("alpha") suma dwoch zbiorow: QSet("alpha", "betha", "delta", "gamma", "eta", "epsilon") roznica dwoch zbiorow: QSet("betha", "delta", "eta", "epsilon")
Odpowiednikiem operatów:
- & jest metoda intersect (część wspólna);
- | jest metoda unite (suma);
- - jest metoda subtract (odejmowanie)
Zamiana elementów dwóch zbiorów miejscami
Do zamiany elementów dwóch zbiorów miejscami służy metoda swap:
Wynik działania powyższego kodu:
Before swap: set1 = QSet("epsilon", "alpha", "betha", "delta", "eta") set2 = QSe t("alpha", "gamma") After swap: set1 = QSet("alpha", "gamma") set2 = QSet("epsilon", "alpha", "betha ", "delta", "eta")