Funkcje zestawu nie zamówionych C ++

Funkcje zestawu nie zamówionych C ++
Zestaw jest wykorzystywany w języku programowania C ++ do przechowywania różnych wartości listy i dynamicznego zamówienia jej elementów. Domyślnie elementy listy są zorganizowane w kolejności rosnącej.

Tabela skrótów służy do skonstruowania zestawu nieopisanego, w którym wartości są konwertowane na indeksy tabeli skrótów, aby upewnić się, że wstawianie wartości jest zawsze losowo przypisywane. Faktem jest, że działają wystarczająco dobrze i zwykle zapewniają ciągłe wyszukiwanie czasu. Wszystkie funkcje w zestawie nieopisanym zwykle wymagają stałego czasu o (1). Chociaż w najgorszej sytuacji mogą oni zająć czas liniowy O (n) na podstawie algorytmu haszu operacyjnego.

Zestaw nie uporządkowany może obejmować jakiekolwiek klucze, niezależnie od tego, czy są one predefiniowane, czy zdefiniowane przez użytkownika danych danych. Ale ilekroć deklarujemy klucze struktur danych zdefiniowanych przez użytkownika, musimy zatem wskazać metodę porównawczą, która jest używana do porównania kluczy.

Różnica między zestawem ustawionym i nieopisanym

Zestaw to uporządkowana kolekcja odrębnych kluczy. Ale zestaw nie zamówiony to zbiór kluczy, które można ułożić w dowolnej sekwencji. Implementacja zestawu jako zrównoważonej struktury drzewa umożliwia zachowanie kolejności komponentów. Operacje zestawu mają złożoność czasu O (log n), ale zestaw nieopisany ma O (1). Dla zestawu nieo uporządkowanego zdefiniowane są wiele metod. Ale najpopularniejsze to rozmiar i pusta metoda przechowywania, znalezienie wartości klucza oraz wstawianie i usuwanie do konfiguracji. Tylko odrębne klawisze są obsługiwane przez zestaw nie zamówiony; W przypadku zduplikowanych klawiszy można zastosować multiset nieuporządkowany.

Funkcje używane do zestawów nie zamówionych

Zestaw nie uporządkowany ma następujące metody:

  • Insert (): Ta funkcja dodaje nowy element do kontenera.
  • End () funkcja: Zwraca iterator, który wskazuje na element po końcu.
  • Funkcja count (): liczy liczbę przypadków wyświetlania określonego elementu w nieoporządkowanym zestawie.
  • Metoda FINK (): znajduje komponent w zestawie.
  • Clear () funkcja: opróżnia zestaw nieopisany, usuwając wszystkie jego komponenty.
  • Cbegin () Funkcja: Zwraca stały iterator odpowiadający pierwszemu członkowi w zestawie nieopisanym.
  • CEND () Funkcja: Zwraca stały iterator z ostatnią wartością w zestawie nieopisanym.
  • Bucket_Size (): W zestawie nieopisanym ta funkcja zwraca całkowitą liczbę elementów, które są obecne w określonym bedence.
  • Erase () Funkcja: Usuwa się od początku do końca, czy jest to tylko jeden komponent, czy zbiór elementów.
  • Funkcja size (): Daje zliczanie elementów nieuporządkowanego zestawu.
  • Funkcja swap (): pozwala zamienić dane dwóch nieopisanych zestawów.
  • Funkcja emplace (): Dodaje element za pomocą tej funkcji do zestawu nieopisanego.
  • Max_size (): Ta funkcja zwraca większość elementów, które nie zamówiony zestaw jest w stanie trzymać.
  • Metoda opty (): Sprawdza, czy zestaw nie zamówiony jest pusty.
  • Równy zakres: Zwraca zakres, a wszystkie elementy mają z góry określoną wartość jako swoją wartość.
  • Metoda HASH (): Jest to metoda nieskażona, która akceptuje tylko jeden parametr i konstruuje jego wartość zwracaną na osobliwą wartość size_t.
  • Funkcja Reserve (): Jest wykorzystywany do żądania pojemności nieuporządkowanego zestawu do zmiany.
  • Bucket () Funkcja: Zwraca numer kubełka elementu.
  • Bucket_Count () Funkcja: Ogólna liczba wiader z zestawu nie zamówiona jest zwracana przez tę metodę.
  • Load_factor (): Zwraca współczynnik pojemności, który jest często stosowany do zestawu nieo uporządkowanego.
  • Funkcja revash (): Zwiększa zakres wiader w zestawie nieopisanym do zdefiniowanej liczby lub większej.
  • Max_load_factor (): Zwraca ostateczny wskaźnik pojemności obciążenia, który może obsługiwać zestaw nieopisany.
  • Emplace_hint () funkcja: przy użyciu wskazówki dodaje nowy element do zestawu nieopisanego, jeśli wartość dodana jest odrębna.
  • Funkcja key_eq (): Zapewnia wartość logiczną w oparciu o porównanie.

Wykonanie różnych funkcji nieoprzedanych w języku C ++ jest omówione w tym artykule.

Przykład 1:

Średni czas przetwarzania funkcji FINK (), insert () i erase () jest stały. Jeśli klucz nie jest obecny w zdefiniowanym zestawie, metoda Find () zapewnia iterator do funkcji end (); w przeciwnym razie zwraca iterator do atrybutu kluczowego. Aby uzyskać klucz, odwołując się do wartości kluczowych do * operatora, iterator działa jako wskaźnik do kluczowych atrybutów. Poniżej znajduje się instancja deklaracji dla funkcji FINK (), insert () i iteracji w zestawie nieopisanym.

#włączać
za pomocą przestrzeni nazw Std;
int main ()

Underred_Setstrings;
smyczki.wstaw („i”);
smyczki.wstaw („miłość”);
smyczki.wstaw („to”);
smyczki.wstaw („Play”);
smyczki.wstaw („badminton”);
String key = "Like";
if (struny.Znajdź (klucz) ==.koniec())
Cout<< key << " to explore " <w przeciwnym razie
Cout<< "explore " << key <key = "badminton";
if (struny.Znajdź (klucz) ==.koniec())
Cout<< key << " to explore\n" ;
w przeciwnym razie
Cout<< "explore " << key <Cout<< "\nAll required elements : ";
underred_set :: iterator i;
dla (i = ciągi.zaczynać(); I != Strings.koniec(); i ++)
Cout<< (*i) <

Uwzględniamy plik nagłówka na początku tego kodu. Następnie wprowadzamy standardową przestrzeń nazw jako STD. Następnie wzywamy funkcję Main (). W ramach tej funkcji deklarujemy zestaw nieopisany. Tutaj używamy zestawu nieopisowanego do układania elementów zestawów. Podajemy ciąg jako parametr funkcji nieopisanej. Następnie wkładamy różne struny w zestawach. Mijamy liczne struny jako argumenty funkcji insert (). Następnie określamy wartość klucza za pomocą słowa kluczowego „klucz”. Metoda Find () jest stosowana w następnym etapie. Ta funkcja jest stosowana, aby znaleźć wymagany ciąg zestawu.

Wykorzystujemy metodę END () do zakończenia ciągów. Ta funkcja zwraca iterator, gdy klucz nie istnieje w zestawie. Komenda „cout” jest stosowana do wydrukowania instrukcji. Następnie ponownie zainicjujemy wartość atrybutu „klucz”. Znajdujemy wartość atrybutu w ciągu za pomocą funkcji FINK () i zakończamy ciąg za pomocą metody end (). Stosujemy oświadczenie „cout”, aby pokazać wynik. Iternujemy cały zestaw i drukujemy zawartość zestawu za pomocą instrukcji „Cout”. Używamy metody SET nie zamówionej, a także deklarujemy iterator jako „ja”. Pętla „for” jest zatrudniona.

Najpierw zainicjujemy zmienną, a następnie używamy funkcji początkowej (), aby uruchomić określony ciąg. Ponadto definiujemy stan pętli. Funkcja end () jest wywoływana. Wartość iteratora jest zwiększana o 1. Ostatecznie instrukcja „cout” służy do pokazania wartości iteratora.

Przykład 2:

W takim przypadku wykonamy kod, w którym zadeklarujemy listę różnych wartości, a następnie znajdziemy wszystkie duplikaty z tej listy za pomocą funkcji nieopisanej.

#włączać
za pomocą przestrzeni nazw Std;
void printduplicates (int a [], int b)

underred_setIntset;
underred_setDuplicate;
for (int j = 0; j < b; j++)

if (intset.Znajdź ([j]) == intset.koniec())
intset.wstaw ([j]);
w przeciwnym razie
duplikować.wstaw ([j]);

Cout<< "The list of duplicated elements: ";
underred_set :: iterator IT;
dla (to = duplikat.zaczynać(); To != duplikat.koniec(); it ++)
Cout<< *it << " ";

int main ()

int a [] = 11, 30, 42, 21, 94, 35, 11, 77, 62, 89, 94, 35;
int b = sizeof (a) / sizeof (int);
printduplicates (a, b);
powrót 0;

Tutaj dołączamy bibliotekę. W następnym kroku wykorzystujemy standardową przestrzeń nazw jako STD. Używamy metody print (), aby wyświetlić replikę w zdefiniowanej tablicy za pomocą zestawu nieopisanego. Zapewniamy tablicę i zmienną do zwiększenia liczby całkowitej jako argumenty metody printduplicates ().

Teraz deklarujemy, że nieuporządkowane zestawy do nabycia i uratowania duplikatów. Używana jest funkcja zestawu nieopisanego. Podajemy liczbę całkowitą jako jej parametr. Następnie wykorzystujemy inną funkcję zestawu nieopisanego, aby znaleźć zduplikowane elementy. Tutaj stosujemy pętlę „for”. Ogłaszamy zmienną pętli „for”. Następnie określamy warunek. Następnie zwiększamy wartość „J”. Nazywamy funkcję Find (), aby znaleźć zdefiniowany element w tablicy. Przekazujemy konkretny element jako argument tej funkcji. Jeśli wymagany element jest już obecny w tablicy, wstawiamy ten element do zestawu duplikatów.

Pokazujemy zduplikowane wartości tablicy za pomocą instrukcji „Cout”. Oświadczamy zmienną „to” iteratora dla zestawu nieopisanego. Zastosowana jest pętla „for”. Następnie metody początkowe () i end () są stosowane w pętli „for”. Następnie nazywamy funkcję Main (). Zainicjujemy zmienną „a”. Następnie definiujemy elementy tablicy, a ta tablica jest przechowywana w zmiennej „A”. Znajdujemy rozmiar wymaganej tablicy za pomocą metody sizeof (). Przekazujemy tablicę jako parametr tej funkcji.

Dzielimy wynikową wartość według wielkości liczb całkowitych. Wartość, którą otrzymujemy po podzieleniu, jest przechowywana w zmiennej „B”. Wyświetlamy zduplikowane wartości tablicy za pomocą metody printduplicate (). Ostatecznie stosujemy polecenie „return 0”.

Przykład 3:

Element danych można dodać do nieuzasadnionego zestawu zestawu za pomocą funkcji biblioteki standardowej szablonu C ++ - funkcja insert (). Każdy element w zestawie nieopisanym ma określoną wartość i jest dodawany tylko wtedy, gdy jest niedostępny w zestawie. Ponieważ pojemnik stosuje kilka metod mieszania, wstawienie odbywa się automatycznie w punkcie, który optymalnie spełnia ten wymaganie. W rezultacie rozmiar kontenera jest znacznie wzmocniony przez liczbę odzyskanych elementów.

Parametry metody INSERT ():

  • Wartość: definiuje wartość, którą należy dodać do kontenera.
  • Po pierwsze, iteratorzy, które zapewniają różnorodne komponenty. Zauważ, że zakres obejmuje wszystkie komponenty między pierwszym elementem a ostatnim elementem, takie jak ten określony przez pierwszy element, ale kończy element wskazany przez ostatni element.

Metoda zwraca parę, mając parę :: Najpierw skonfigurowany do iteratora odnoszący się do nowego zaktualizowanego elementu lub odpowiedniego komponentu już obecnego w zestawie. Jeśli dodano nowy element danych, para :: Drugi komponent w parie jest dostosowywany do true; W przeciwnym razie jest to podane jako fałszywe, jeśli identyczny element jest już obecny.

Poniższy program pokazuje wspomnianą funkcję:

#włączać
#włączać
#włączać
za pomocą przestrzeni nazw Std;
int main ()

underred_set set = „poniedziałek”, „wtorek”;
String str = "środa";
Ustawić.wstaw (str);
Cout<< "The set of week days is:"
<dla (const string & m: set)
Cout<< m
<< " ";

Cout<powrót 0;

Przede wszystkim integrujemy wymagane pliki nagłówka. Jest odpowiedzialny za funkcje wejściowe i wyjściowe. Plik nagłówka zawiera deklarację ciągów. Trzeci zawiera wszystkie nieoprzeżone zestawy. Wykorzystujemy standardową przestrzeń nazw jako STD. Następnie rozpoczynamy kodowanie wewnątrz ciała funkcji main () po wywołaniu funkcji main (). Korzystamy z nieoporządkowanego zestawu ciągów.

Tutaj definiujemy elementy mojego zestawu. Określamy dwa dni tygodnia. Teraz wskazujemy wartość ciągu, którą chcemy wstawić do wymaganego zestawu. Wkładamy ten ciąg przy użyciu metody insert (). Oświadczenie „cout” jest wykorzystywane do pokazania tekstu „Zestaw dni powszednich jest”. Ponownie używamy instrukcji „Cout” przed wprowadzeniem polecenia „Return 0”. To oświadczenie „cout” drukuje wszystkie nazwiska dni powszednie.

Wniosek

Zastosowanie funkcji zestawu C ++ nie jest omówione w tym artykule. Zaimplementowaliśmy kilka kodów oprogramowania Devc ++, w których wykorzystaliśmy wiele funkcji związanych z zestawami nieopisanymi. Zestawy nie zamówione to struktury danych, które mogą przechowywać różne komponenty w dowolnej kolejności i zapewniają wydajny dostęp do określonych elementów na podstawie ich wartości. W pierwszej kolejności wykorzystaliśmy wiele funkcji SET UNOORED, aby zbadać, jak działa kod. Za pomocą metody find () zidentyfikowaliśmy określony element w zestawie. Za pomocą funkcji end () zakończyliśmy zestaw nieopisany. Na drugiej ilustracji skonstruowaliśmy tablicę zawierającą różne liczby całkowite. Zarówno powtarzane, jak i nie powtórzone wartości są zawarte w tablicy. Aby znaleźć zduplikowane wartości w określonej tablicy, zastosowaliśmy metodę Find (). Metodę Insert () zastosowano w ostatnim przykładzie, aby dodać wartość do wymaganego zestawu nieopisanego.