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ż: 3466 razy
Wstęp
Klasa unordered_set jest dostępna od standardu C++ 11 po załączeniu pliku nagłówkowego unordered_set . Klasa ta różni się od klasy set tym, że elementy nie są dodawane z jednoczesnym sortowaniem dzięki czemu czas dodawanie kolejnych elementów jest krótszy.
Konstruktory klasy unordered_sort
Klasa unordered_sort jak każdy kontener posiada konstruktor bezparametrowy i konstruktor kopiujący:
std::unordered_set<int> set;
std::unordered_set<int> setCopy(set);
Możliwe jest również wypełnienie obiektu klasy unordered_set elementami już na etapie konstruktora w następujący sposób:
std::unordered_set<int> set( { 10, 20, 20, 30, 30, 40 } );
Możliwe jest też skopiowanie wartości z tablicy:
int table[] = { 10, 20, 20, 30, 30, 40 };
std::unordered_set<int> set( table, table + sizeof(table) / sizeof(int));
lub innego obiektu klasy unordered_set :
std::unordered_set<int> set( { 10, 20, 20, 30, 30, 40 } );
std::unordered_set<int> set2(set.begin(), set.end());
Iterowanie po elementach obiektu klasy unordered_set
Iterowanie po elementach w C++ 11 wygląda następująco:
std::unordered_set<int> set( { 10, 20, 20, 30, 30, 40 } );
for(auto& element: set) std::cout << element << std::endl;
Dodawanie i usuwanie elementów klasy unordered_set
Dodawanie kolejnych elementów można wykonywać za pomocą metody insert :
std::unordered_set<int> unordered_set({0, 100, 20, 20, 30, 40});
unordered_set.insert(10);
sunordered_setet.insert(table, table + sizeof(table) / sizeof(int));
for(auto& element: unordered_set){
std::cout << element << std::endl;
}
natomiast do usunięcia elementu z obiektu klasy set konieczne jest metody erase :
std::unordered_set<int> unordered_set({0, 100, 20, 25, 30, 40});
set.erase(100); // usunie element zawierający wartość 100
set.erase(set.begin()); // usunie pierwszy element
set.erase(set.find(25), set.end()); // usunie elementy większe lub równe 25
for(auto& element: unordered_set){
std::cout << *i << std::endl;
}
Wynik działania powyższego kodu:
20
Możliwe jest również usunięcie wszystkich elementów obiektu klasy set za pomocą metody clear .
Zamiana elementów dwóch obiektów klasy unordered_set
Za pomocą metody swap elementy dwóch obiektów klasy unordered_set mogą zostać zamienione miejscami. Oto przykład:
std::unordered_set<int> unorderedset( {0, 100, 20, 20, 30, 40} );
std::unordered_set<int> unorderedset2(table, table + 3);
std::cout << "object unordered_set before swap operation:" << std::endl;
for(auto& element: unordered_set){
std::cout << element << std::endl;
}
std::cout << "object unordered_set2 before swap operation:" << std::endl;
for(auto& element: unordered_set2){
std::cout << element << std::endl;
}
unordered_set.swap(unordered_set2);
std::cout << "object unordered_set after swap operation:" << std::endl;
for(auto& element: unordered_set){
std::cout << element << std::endl;
}
std::cout << "object unordered_set2 after swap operation:" << std::endl;
for(auto& element: unordered_set2){
std::cout << element << std::endl;
}
Wynik działania powyższego kodu:
object unordered_set before swap operation:
0
20
30
40
100
object unordered_set2 before swap operation:
0
20
100
object unordered_set after swap operation:
0
20
100
object unordered_set2 after swap operation:
0
20
30
40
100
Znajdowanie wskaźnika na element zawarty w obiekcie klasy unordered_set oraz sprawdzanie, czy element istnieje
Za pomocą metody find można uzyskać wskaźnik na szukany element w obiekcie klasy unordered_set . Metoda ta zwraca wskaźnik na koniec gdy element nie zostanie odnaleziony. W celu sprawdzenia, czy element istnieje można posłużyć się również metodą count , która zwraca 1, gdy element istnieje a 0 w przeciwnym przypadku.
Liczba elementów zawartych w obiekcie klasy unordered_set oraz sprawdzanie, czy obiekt nie ma elementów
Liczebność elementów obiektu klasy unordered_set można uzyskać za pomocą metody size , natomiast metodą empty można uzyskać informację o tym, czy obiekt nie zawiera żadnych elementów.
Strony powiązane
Tematy powiązane