C ++ Funkcje ustawione

C ++ Funkcje ustawione
„Możemy zastosować liczne korzystne funkcje i narzędzia C ++, aby pomóc w dynamicznym programowaniu. Jedna z tych części to zestaw znaleziony w standardowej bibliotece szablonów, która oferuje mechanizm skutecznego przechowywania danych w zorganizowany sposób. W tym samouczku zestawu C ++ porozmawiamy o wszystkich podstawach funkcji zestawu C ++.

Struktury C ++ STL do przechowywania elementów w określonej kolejności nazywane są zestawem. Zestaw musi mieć unikalne komponenty. Każdy element w zestawie może być zidentyfikowana przez jego wartość indywidualnie, więc służą one jako klucze. W C ++ możemy dodawać i usuwać elementy z zestawu; Nie możemy jednak zmienić wartości komponentów, ponieważ są one statyczne po umieszczeniu w zestawie."

Definicja zestawu w C++

Jak już wspomniano, zestawy to tylko rodzaj standardowych kontenerów bibliotecznych szablonów wykorzystywanych w C ++ do dokładnego przechowywania elementów. Zestawy można jedynie poddać metodom wstawienia i usunięcia. W obiekcie typu zestawu elementy są automatycznie zorganizowane w określonej kolejności. Nie jesteśmy w stanie zmienić ani zaktualizować wartości już istniejących komponentów w zestawie, ponieważ elementy w kontenerach są niezmienne. Określając to precyzyjnie, element w zestawie służy jako klucz dla siebie. Zestawy są włączone tylko do zawierania określonej wartości.

Kiedy korzystać z zestawów?

W programowaniu konkurencyjnym zestawy są szeroko stosowane jako pojemniki. Gdy konieczne jest przechowywanie przedmiotów w sposób skategoryzowany, możemy rozważyć zastosowanie zestawów, ale pamiętaj, że zestawy nie pozwalają na przechowywanie powtarzanych wartości. Po wprowadzeniu wartości nie można zmienić wartości.

Wdrażanie zestawów

Aby wchodzić w interakcje z zestawami, 2 główne pliki nagłówka powinny zostać zintegrowane. Dostęp do zestawów jest dostępny, używając iteratorów. Zintegruj #include i #include w swoim kodzie. Mamy wybór użycia tego jednego pliku nagłówka, a nie tych dwóch. Biblioteka służy jako substytut wyżej wymienionych plików nagłówka. Możemy zastosować ten jeden plik nagłówka, ponieważ zawiera on wszystkie pliki nagłówka. Do definiowania zestawów na poziomie wewnętrznym używane są drzewa wyszukiwania binarnego.

Ustaw cechy w C++

Poniżej znajdują się niektóre z wspólnych atrybutów zestawu w C ++:

  • Charakterystyka wyjątkowości: w C ++ każdy członek zestawu musi być odrębny; Powtarzane elementy nie są akceptowane. W rezultacie zestawy w C ++ nie obsługują powtórzeń.
  • Cecha zorganizowania: Składniki zestawu pojemnika są zwykle zapisywane w zorganizowany sposób.
  • Możliwość niezmiennego: po zapisaniu elementów w zestawie nie można ich zmodyfikować. W rezultacie, podczas gdy dodanie i usuwanie są dozwolone, aktualizacja lub modyfikacja istniejących komponentów zestawu nie jest wymagane.
  • Atrybut wykonania wewnętrznego: BST jest używany do logicznego tworzenia zestawu w C++.
  • Funkcja indeksowania: Ponieważ standardowa biblioteka szablonów C ++ nie zapewni indeksowania, zestawy w C ++ również mają funkcję niezamieszkania.

Składnia zestawu

Poniżej znajduje się STD :: Set Deklaracja z biblioteki „Set”:

Parametry

  • KLUCZ: Rodzaj komponentu reprezentowanego w kluczu. Każda inna struktura danych, taka jak typ zdefiniowany przez użytkownika, mógłby zostać wykorzystana zamiast klucza.
  • Allokatory: będą to obiekty odpowiedzialne za włączenie administracji magazynowej. Ilekroć chcemy segregować alokację i wykonywać tworzenie w 2 fazach, musimy użyć alokatora STD ::. Gdy sekwencyjna eliminacja i pamięć dynamiczna jest przeprowadzana w 2 fazach, jest również stosowana. Wartość zwracana dla alokatora argumentu typu we wszystkich kontenerach jest STD :: Allocator. Nowi i wymazujący operatorzy to wszystko, co podstawowy alokator wykorzystuje do pozyskiwania i złagodzenia przechowywania.
  • Porównywać: Atrybut binarny z dwoma parametrami mającym podobny typ jak komponenty i wartość zwracana bool. Jeśli uważa się, że element pojawił się przed kluczem w sekwencjonowaniu funkcji, definiuje się instrukcja (X,. To stwierdzenie jest używane przez obiekt ustawiony do oceny układu komponentów wewnątrz pojemnika, a także tego, czy dwa klucze elementów są równe (instynktownie je porównywane: są równe, jeśli są równe! comp (x, y) &&!comp (y, x)).

Zestaw pojemnika może pomieścić unikalne komponenty. Może to być obiekt funkcyjny lub wskaźnik funkcji. Mniej jest wartością domyślną i zapewnia takie same wyniki, jak używanie mniej niż niż niż wyrażenie (x

Funkcje na zestawach

W C ++ zestawy mogą być poddawane szerokiej gamie operacji. Oceńmy niektóre z głównych technik zestawu.

  • Funkcja begin (): Iterator wskazujący na pierwszy element zestawu jest zwracany przez tę funkcję.
  • End () funkcja: Ta metoda zapewnia iterator wskazujący punkt przylegający do ostatniego elementu zestawu w podejściu teoretycznym.
  • Funkcja opty (): Jest wykorzystywany do ustalenia, czy zestaw jest pusty.
  • Metoda size (): Zapewnia całkowitą liczbę elementów w zestawie.
  • Max_size () funkcja: pobiera górną granicę elementów zestawu lub wyższą wartość, którą może pomieścić zestaw.
  • Rbegin (): Ta funkcja, w przeciwieństwie do początku (), zapewnia odwrócony iterator, który wskazuje na końcową wartość zestawu.
  • Rend (): W przeciwieństwie do funkcji end () zapewnia odwrócony iterator, który wskazuje logicznie miejsce przed ostatnią wartością zestawu.
  • Erase () Funkcja: W przypadku użycia na zestawie eliminuje element w miejscu wskazanym przez wskaźnik określony w parametrze.
  • Erase (const_n): Ta metoda natychmiast usuwa wartość „n” z zestawu, gdy jest dostarczana jako argument.
  • Insert (const n): Ta metoda dodaje nowy członek „n” do zestawu.
  • Znajdź (n): znajduje zestaw dla zdefiniowanego elementu i zapewnia iterator odnoszący się do lokalizacji zidentyfikowanego komponentu. Wytwarza iterator wskazujący na koniec elementu, którego nie można odzyskać.
  • Count (const n): Ta funkcja liczy liczbę liczb dostarczonych „n” i zapewnia 0 lub 1 w zależności od tego, czy element został pobrany, czy nie.
  • Clear () Funkcja: Eliminuje każdy element z zestawu.

Przykład nr 1

W tym przypadku zestaw zostanie zainicjowany. W C ++ określamy różne typy elementów, które zostaną umieszczone w zestawie po jego utworzeniu. Punkty danych zestawu są zwykle przechowywane w kolejności rosnącej. Większą funkcję można wykorzystać do przechowywania danych w kolejności malejącej. Pusty zestaw

  • Za pomocą wartości
  • Za pomocą tablicy.
  • Za pomocą innego zestawu.

To są liczne techniki deklarowania zestawu.

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

sets1;
ustawićs2;
ustawić s3 = 62, 17, 25, 81;
ustawić S4 (S3);
int ar [] = 15, 24, 75, 51;
SET S5 (AR, AR+4);
set :: Iterator i;
dla (auto i = s5.zaczynać(); I!= S5.end (); i ++)

Cout<
zwrot 1;

Pliki nagłówka i zostaną zintegrowane najpierw. Następnie zostanie wykorzystana standardowa przestrzeń nazw. Funkcja main () zostanie wywołana. Pierwszy zestaw zostanie zainicjowany i będzie to pusty zestaw, ponieważ nie zawiera żadnego elementu. Drugi zestaw zostanie ogłoszony jako pusty zestaw w kolejności malejącej. Nowy zestaw zostanie zainicjowany przez dodanie do niego różnych liczb całkowitych. Ten zestaw zawiera cztery elementy.

Ponadto zainicjujemy nowy zestaw o nazwie „S4” za pomocą innego zestawu „S3”. Podaliśmy wartości S3 jako parametry S4. Teraz zestaw zostanie zadeklarowany z tablicy. Określamy wartości w tablicy, a następnie zapisujemy te wartości w zmiennej „A”. Piąty zestaw zawiera 4 wartości tablicy. Następnie zdefiniujemy iterator dla tych wymaganych zestawów. Zdobędziemy wartości wszystkich zestawów za pomocą pętli „dla”.

Przykład nr 2

Ta ilustracja pokazuje, jak działają metody wstawiania i usuwania zestawu.

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

Ustaw s1;
S1.wstaw (22);
S1.wstaw (33);
S1.wstaw (56);
S1.wstaw (9);
S1.wstaw (67);
S1.wstaw (47);
S1.wstaw (88);
set :: iterator p_1, p_2, p_3;
Cout<< " The values of the set are: \n" ;
dla (p_1 = s1.zaczynać() ; p_1 != S1.koniec() ; P_1 ++)

Cout<< *p_1 << " " ;

Cout<ustawić S2 (S1.początek (), s1.koniec() );
ustawić :: Iterator I;
p_2 = s1.znaleźć (22);
p_3 = s1.znaleźć (88);
S1.usuń (p_2, p_3);
Cout<< " The values of the set after using erase() function: \n " ;
dla (p_1 = s1.zaczynać() ; p_1 != S1.koniec() ; P_1 ++)

Cout<< *p_1 << " ";

Cout<Cout<< " The values of second set are: \n" ;
dla (i = s2.zaczynać() ; I != S2.koniec() ; i ++)

Cout<< *i<< " ";

powrót 0;

Wymagane biblioteki zostaną uwzględnione na początku programu. Standardowa przestrzeń nazw zostanie dodana jako „STD”. Teraz zostanie wywołana metoda main (). Zadeklarujmy różne zestawy. Wywołamy metodę INSERT (), aby dodać wartości do zestawu. Różne wskaźniki zostaną utworzone i nazwane „P_1”, „P_2” i „P_3”. Iterator zostanie ogłoszony jako te wskazówki. Oświadczenie „cout” zostanie użyte do przedstawienia wiersza „Wartości zestawu są”. Teraz pętla „for” zostanie wykorzystana do pokazania wszystkich wstawionych wartości zestawu.

Begin () byłby wywoływany, aby uruchomić wartości zestawu do wydrukowania, a metody end () byłyby zastosowane w celu zakończenia wartości zestawu. Te metody zostaną wywołane w pętli „dla”. Konstruktor pierwszego wskaźnika zostanie zdefiniowany w oświadczeniu „Cout”. Teraz wykonamy kolejny zestaw, organizując wartości w kolejności malejącej. Pozycje pierwszego i drugiego wymaganego zestawu są takie same.

Funkcja Find () byłaby wywoływana na elementach pierwszego zdefiniowanego zestawu. Ta funkcja otrzymuje zdefiniowane wartości z zestawu. Teraz zastosujemy metodę Erase () do usuwania wartości z pierwszego zestawu. Wartości, które zostaną usunięte, wynoszą od 22 do 88. Instrukcja „Cout” zostanie użyta do pokazania tekstu „Wartości zestawu po użyciu funkcji Erase ()”. Aby pokazać wartości, zostanie wykorzystana pętla „for”.

Wtedy zostanie ogłoszony konstruktor pierwszego wskaźnika. Teraz używamy pętli „for” do drukowania elementów drugiego wymaganego zestawu. Instrukcja „cout” drukuje wiersz „Wartości drugiego zestawu są”. Przed dodaniem polecenia „return 0” zostanie utworzony konstruktor zmiennej iterator.

Przykład nr 3

W tym przykładzie zostaną użyte dwie funkcje, znaleźć () i wymazować. Jeśli element jest zidentyfikowany, metoda Find () wytwarza iterator odnoszący się do niego; W przeciwnym razie zapewnia iterator odnoszący się do końca zestawu. Elementy w zestawie usuną za pomocą funkcji Erase ().

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

sets_1;
S_1.wstaw (45);
S_1.wstaw (12);
S_1.wstaw (17);
S_1.wstaw (89);
S_1.wstaw (25);
S_1.wstaw (14);
S_1.wstaw (78);
S_1.wstaw (34);
set :: Iterator i;
Cout<<"Values of required set: \n";
dla (i = s_1.zaczynać() ; I != S_1.koniec() ; i ++)

Cout<<*i<< " ";

Cout<Cout<< " Updated set \n " ;
S_1.usuń (s_1.początek (), s_1.znaleźć (25));
dla (i = s_1.zaczynać() ; I!= S_1.koniec() ; i ++)
Cout<< *i<< " " ;
Cout<Cout<< " lower bound of 45 is: \n" ;
Cout<< *s_1.lower_bound( 45 )<Cout<< " lower bound of 17 is: \n" ;
Cout<< *s_1.lower_bound( 17 ) <Cout<< " upper bound of 45 is: \n" ;
Cout<< *s_1.upper_bound( 45 ) <Cout<< "upper bound of 17 is: \n" ;
Cout<< *s_1.upper_bound( 17 ) <powrót 0;

Program obejmie odpowiednie biblioteki na początku nazywane . Standardowa przestrzeń nazw jako „STD” zostanie wprowadzona. Odniesienie do funkcji main () zostanie teraz wykonane. Najpierw określ zestaw. Aby uwzględnić wartości w zestawie, użylibyśmy funkcji Insert (). Iterator zostanie zidentyfikowany jako „I”; Wartości odpowiedniego zestawu zostaną wyświetlone za pomocą polecenia „Cout”. Pętla „for” zostanie teraz używana do wyświetlania wszystkich włożonych wartości zestawu zestawu.

Funkcja początkowa () zostanie użyta do rozpoczęcia drukowania wartości zestawu, a metoda end () zostanie użyta do zakończenia drukowania wartości zestawu. Te zdefiniowane metody byłyby zastosowane w pętli „dla”. Oświadczenie „cout” zadeklaruje konstruktor iteratora. Tekst „zaktualizowany zestaw” zostanie wyświetlony za pomocą instrukcji Cout. Komponenty pierwszego zestawu zostaną określone, wykorzystując funkcję FINK (). Zdefiniowane wartości są uzyskiwane przez tę funkcję z zestawu.

Aby usunąć wartości z pierwszego zestawu, użyjemy teraz metody Erase (). Do 25 wartości zostanie wyeliminowane. Korzystając z pętli „dla”, pozostałe liczby całkowite zostaną przedstawione. Oświadczenie „Cout” zapewni deklarację konstruktora iteratora. Operacje dolne i górne związane z wartościami zestawu zostaną przeprowadzone. Wartości 45 i 17 zestawu byłyby dostarczone do funkcji dolnej granicy (), która następnie użyłaby polecenia „cout” do wydrukowania wyniku. Te podobne wartości w zestawie będą traktowane do metody górnej granicy (). Wartość wyniku zostanie wydrukowana przez polecenie „Cout”. Polecenie „Powrót 0” zostanie dodane na końcu.

Wniosek

W tym przewodniku omówiliśmy funkcje zestawu C ++. Podobnie jak inne standardowe pakiety biblioteczne, zestaw C ++ jest kluczowy. Ułatwia programistom wyodrębnienie i manipulowanie wartościami. Wdrożyliśmy trzy programy. Inicjalizacja zestawów jest obsługiwana w pierwszym przykładzie. Drugi wyświetla dodatki i usunięcie wartości z zestawu. W końcowym przypadku wybieramy kilka wartości z zestawu, a następnie je usuwamy.