set stl
Szybko naucz się SET w STL z prostymi przykładami.
Przyjrzymy się dokładniej kontenerowi STL - zestawom, tutaj w tym samouczku. Zestawy to asocjacyjne kontenery z unikalnymi elementami w określonej kolejności.
Wartość elementu w zestawie jest jednocześnie kluczem używanym do uzyskania do niego dostępu. Wszystkie elementy zestawu muszą być niepowtarzalne. Nie możemy modyfikować elementów w zestawie po ich wstawieniu. Możemy jednak wstawiać lub usuwać elementy.
=> Sprawdź tutaj, aby uzyskać pełną serię szkoleń DARMOWYCH w języku C ++
Czego się nauczysz:
ZESTAW W STL
Aby zaimplementować zestaw, musimy dołączyć nagłówek do naszego programu.
darmowy test online do testowania ręcznego
#include
Zestaw możemy zadeklarować w następujący sposób:
set myset;
Na przykład,jeśli chcemy zestaw, myset elementu o typie całkowitoliczbowym, możemy zadeklarować zestaw jako:
set myset;
Operacje na planie
Kontener zestawu obsługuje również podobne operacje, takie jak mapa, o której już mówiliśmy. Poniżej przedstawiono niektóre z podstawowych operacji obsługiwanych przez zestaw.
- zaczynać : Zwraca iterator do pierwszego elementu zestawu.
- koniec : Zwraca iterator do elementu, który następuje po ostatnim elemencie zestawu.
- wstawić : Wstawia nowy element do zestawu.
Operacja wstawiania dla zestawu ma trzy warianty:
-
-
- wstaw (element): To bezpośrednio wstawia element do zestawu i zmienia kolejność zestawu.
- insert (pozycja, wskazówka): Tutaj określamy pozycję wstawienia elementu.
- insert (iterator.begin (), iterator.end ()): W tej odmianie możemy bezpośrednio wstawić zakres do zestawu, jak tablicę lub inny zestaw.
-
- wymazać : Usuwa element z zestawu.
- rozmiar : Zwraca rozmiar zestawu.
- największy rozmiar : Zwraca maksymalny rozmiar, jaki może pomieścić zestaw.
- pusty : Zwraca informację, czy zestaw jest pusty.
- jasny : Usuwa wszystkie elementy z zestawu.
- odnaleźć : Znajduje element w zestawie. Jeśli element zostanie znaleziony, zwraca iterator do tego elementu w zestawie. Jeśli nie zostanie znaleziony, zwraca iterator na koniec zestawu.
Poniżej podano program, który demonstruje użycie niektórych ważnych funkcji SET.
#include #include #include using namespace std; int main() { set myset; myset.insert(140); myset.insert(130); myset.insert(160); myset.insert(120); cout<<'
Size of myset: '< Wynik:
Wielkość zestawu: 4
Zestaw myset to: 120 130 140 160 160
Po wstawieniu 100, zestaw myset to: 100 120 130 140 160
Po wstawieniu tablicy arr, zestaw myset to: 100 110 120 130 140 150 160
Po usunięciu elementów mniejszych niż 130, myset: 130 140 150 160
Jak pokazano na powyższym wyjściu, tworzymy zestaw za pomocą prostej funkcji wstawiania.
Następnie wstawiamy element 100 do zestawu za pomocą innego wariantu funkcji insert, przekazując referencję iteratora i wartość elementu 100. Widzimy, że po zakończeniu wstawiania zestaw jest zmieniany i kolejność elementów jest zachowana.
Następnie wstawiamy tablicę {110,150,150} za pomocą funkcji wstawiania. Jeśli zobaczysz zestaw danych wyjściowych wyświetlany po wstawieniu tablicy, widzimy, że do zestawu wprowadzono tylko jedną wartość 150. Dzieje się tak, ponieważ wszystkie elementy w zestawie są niepowtarzalne.
Pokazujemy również rozmiar zestawu. Następnie za pomocą funkcji find znajdujemy elementy, które są mniejsze niż 130, a następnie wywołujemy funkcję erase, aby usunąć te elementy. Następnie wyświetlamy wynikowy zbiór.
Chodzi o zestaw kontenera. Następnie omówimy multiset będący rozszerzeniem zestawu kontenera.
Multiset
Zestaw multiset to kontener asocjacyjny podobny do zestawu we wszystkich aspektach, z wyjątkiem jednej różnicy, tj. Wiele elementów może mieć tę samą wartość.
Deklaracja dla multisetu wygląda następująco:
multiset mset;
Zestaw elementów całkowitych można zadeklarować jako:
multiset mset;
Różne operacje obsługiwane przez multiset są podobne do operacji obsługiwanych przez zestaw.
Teraz omówimy bezpośrednio przykład multiset, który demonstruje operację, której używa.
#include #include #include using namespace std; int main() { multiset myset; myset.insert(11); myset.insert(13); myset.insert(13); myset.insert(10); cout<<'
Size of myset: '< Wynik:
Wielkość zestawu: 4
Po wstawieniu czterech elementów multiset myset to: 10 11 13
13
Po wstawieniu 15, multiset myset to: 10 11 13 13 15
Po usunięciu elementów mniejszych niż 15, myset: 15
pytania do rozmowy kwalifikacyjnej testowania ręcznego przez 3 lata doświadczenia
Zrzut ekranu wyjścia przedstawiono poniżej:
Jak pokazano na powyższym wyjściu, początkowo wprowadzamy cztery elementy do zestawu multiset, z których dwa są takie same. Ale w przeciwieństwie do zestawu, te elementy są z powodzeniem wstawiane do multisetu. Następnie wstawiamy kolejny element 15, podając pozycję przez iterator, który jest pomyślnie wstawiony.
Następnie znajdujemy elementy mniejsze niż 15 w zestawie multiset i wywołujemy funkcję kasowania na tych elementach. Na koniec wyświetlamy multiset.
Nieuporządkowany zestaw
Do tej pory omawialiśmy set i multiset w tym samouczku.
Chociaż zestaw jest uporządkowaną sekwencją unikalnych kluczy, mamy inny kontener asocjacyjny, który nazywa się „zestawem nieuporządkowanym”, który jest zbiorem kluczy lub elementów przechowywanych w dowolnej kolejności. Oznacza to, że elementy w nieuporządkowanym zbiorze są „nieuporządkowane”.
Podobnie jak w przypadku mapy nieuporządkowanej, zestaw nieuporządkowany jest również implementowany przy użyciu tablicy skrótów, w której klucze są mieszane w indeksy tabeli skrótów. Ze względu na użycie tablicy haszującej nie jest możliwe zachowanie kolejności elementów w przeciwieństwie do zestawu, który używa zrównoważonej struktury drzewa.
Nagłówek do implementacji nieuporządkowanego zestawu to.
#include
Deklarujemy nieuporządkowaną mapę typu integer w następujący sposób:
Unordered_set uset;
Operacje obsługiwane przez unordered_set są podobne do tych obsługiwanych przez unordered_map, które są omówione w naszych samouczkach na mapie.
Poniżej podano przykład ilustrujący różne operacje na unordered_set.
#include #include using namespace std; int main() { unordered_set uset; unordered_set :: iterator it; for(int i=0;i<5;i++){ uset.insert(i+2); } cout<<'
Size of uset: '< Wynik:
Rozmiar użytkowy: 5
Elementy w nieuporządkowanym zestawie to: 99 39 6 5 26 4 3 13 2
Znaleziony klucz = 13
umap bucket_count: 11
rozmiar wiadra: 2
Zrzut ekranu powyższego wyniku jest przedstawiony poniżej.
Jak pokazano na powyższym wyjściu, najpierw wstawiamy 5 elementów do nieuporządkowanego zestawu, a następnie wstawiamy kolejne 4 elementy, które demonstrują użycie wariantów funkcji wstawiania. Następnie wyświetlamy zawartość nieuporządkowanego zestawu.
Następnie używamy funkcji find, aby sprawdzić, czy klucz = 13 jest obecny w nieuporządkowanym zbiorze, czy nie.
Następnie przedstawiamy dwie dodatkowe funkcje „Bucket_count” i „Bucket_size”. Funkcje te są związane z wewnętrzną implementacją nieuporządkowanej mapy.
Ten kontener obsługuje również inne funkcje i funkcje iteratora, takie jak max_size, clear, erase, empty itp., Które są podobne do innych kontenerów STL.
Wniosek
W ten sposób doszliśmy do końca naszego samouczka na temat SET w STL.
Mamy nadzieję, że tematy poruszane w ramach tego samouczka STL pomogą Ci zrozumieć STL i jego różne pojemniki.
pytania i odpowiedzi do wywiadu qtp przez 4 lata doświadczenia
=> Przeczytaj popularne serie szkoleń C ++ tutaj.
rekomendowane lektury
- Kolejka priorytetowa w STL
- Listy w STL
- MAPY W STL
- Stosy i kolejki w STL
- Iteratory w STL
- Tablice w STL
- Ciągi, pary i krotki w STL
- Algorytmy w STL