Sposoby zainicjowania zestawu STD w C ++

Sposoby zainicjowania zestawu STD w C ++
Poniżej znajduje się lista kolorów tęczy:
„Red”, „Orange”, „żółty”, „zielony”, „niebieski”, „indygo”, „fiolet”

To jest przykład ustalonego literatury w matematyce, jak i w C++. Jest to również literał tablicy. To zestaw strun. Zestawy liczb całkowitych, pływaków, podwójnych itp., są również możliwe.

STD oznacza standard. Ten artykuł dotyczy sposobów zainicjowania zestawu jako kodu. W module w bibliotece standardowej C ++ znajduje się klasa. Tutaj inicjalizacja oznacza podawanie wartości zestawowi w momencie stworzenia. Tworzenie zestawu jest konstruowanie zestawu.

Zestaw można skonstruować z wartościami początkowymi. Zestaw można również skonstruować puste, a następnie wartości wstawione po utworzeniu.

Moduł ustawiony (podrzędny biblioteka) musi zostać uwzględniony w programie, zanim będzie można go utworzyć i inicjowanie go w tym samym czasie. Program C ++, który obejmuje zestawy, powinien rozpocząć się w następujący sposób:

#włączać
#włączać
za pomocą przestrzeni nazw Std;

Pierwszy wiersz w tym segmencie kodu zawiera bibliotekę iostream (sub). Jeśli wyjście (i wejście) dotyczy terminalu (konsoli), należy uwzględnić bibliotekę iostream. Druga linia zawiera bibliotekę SET (sub); To jest konieczność. Trzecia linia nie jest dyrektywą; To jest stwierdzenie. Nalega, aby każda nazwa używana bez poprzedzania jej nazwy przestrzeni nazw użytkownika pochodzi z standardowej przestrzeni nazw C ++.

Reszta tego artykułu wyjaśnia różne sposoby inicjowania zestawu podczas budowy za pomocą różnych metod budowy. Na końcu artykułu, dodanie wartości (wstawienia) do pustego zestawu jest adresowane.

set (inicitizer_list, const compare & = compare (), const alokator & = alokator ())

Jest to konstruktor do utworzenia zestawu. Jego pierwszym argumentem jest set inicitizer_list. Lista inicjalizator jest literał. To jest to samo, co literał tablicy. Jeśli drugie i trzecie argumenty nie zostaną wpisane, ich domyślne argumenty zostaną zastosowane. Poniższy program pokazuje ten konstruktor w akcji z jego inicjalizacją:

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

Set St („Red”, „Orange”, „żółty”, „zielony”, „niebieski”, „indygo”, „fiolet”);
for (set :: iterator iter = st.zaczynać(); iter != st.koniec(); ITER ++)
Cout << *iter << ", ";
Cout << endl;
powrót 0;

Wyjście to:

niebieski, zielony, indygo, pomarańczowy, czerwony, fioletowy, żółty,

Zauważ, że wyjście jest sortowane w kolejności rosnącej, podczas gdy wejście (pierwszy argument) nie zostało posortowane.

Należy również pamiętać, że aby używać ciągów, klasa stringowa musi zostać uwzględniona; W przeciwnym razie to wskaźniki do sortowanych sznurków, a nie same literały alfabetyczne.

set & operator = (inicitizer_list)

To jest forma konstruktora kopiowania powyższego konstruktora. Nadal inicjalizacja. Poniższy program pokazuje ten konstruktor w akcji z jego inicjalizacją:

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

set st = „czerwony”, „pomarańczowy”, „żółty”, „zielony”, „niebieski”, „indygo”, „fiolet”;
for (set :: iterator iter = st.zaczynać(); iter != st.koniec(); ITER ++)
Cout << *iter << ", ";
Cout << endl;
powrót 0;

Wyjście to:

niebieski, zielony, indygo, pomarańczowy, czerwony, fioletowy, żółty,

Zauważ, że wyjście jest sortowane w kolejności rosnącej, podczas gdy wejście (pierwszy argument) nie zostało posortowane.

set (const set & x)

Ten konstruktor tworzy drugi zestaw za pomocą identyfikatora poprzedniego zestawu jako argumentu. Natychmiast po utworzeniu istnieją dwie kopie tej samej treści. Poniższy program pokazuje ten konstruktor w akcji z jego inicjalizacją:

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

set st = „czerwony”, „pomarańczowy”, „żółty”, „zielony”, „niebieski”, „indygo”, „fiolet”;
SET ST2 (ST); // inicjalizacja
for (set :: iterator iter = st2.zaczynać(); iter != ST2.koniec(); ITER ++)
Cout << *iter << ", ";
Cout << endl;
powrót 0;

Wyjście to:

niebieski, zielony, indygo, pomarańczowy, czerwony, fioletowy, żółty,

Zauważ, że wyjście jest sortowane w kolejności rosnącej, podczas gdy wejście (pierwszy argument) nie zostało posortowane.

set & operator = (const set & x)

To jest prawdziwy konstruktor kopii. Nadal inicjalizacja. Poniższy program pokazuje ten konstruktor w akcji z jego inicjalizacją:

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

set st = „czerwony”, „pomarańczowy”, „żółty”, „zielony”, „niebieski”, „indygo”, „fiolet”;
SET ST2 = ST; // inicjalizacja
for (set :: iterator iter = st2.zaczynać(); iter != ST2.koniec(); ITER ++)
Cout << *iter << ", ";
Cout << endl;
powrót 0;

Wyjście to:

niebieski, zielony, indygo, pomarańczowy, czerwony, fioletowy, żółty,

Zauważ, że wyjście jest sortowane w kolejności rosnącej, podczas gdy wejście (pierwszy argument) nie zostało posortowane.

zestaw szablonów (pierwszy inputiterator, inuputiterator last, const compare & comp = compar (), const alokator & = alokator ());

Ten konstruktor utworzy nowy zestaw, kopiując zakres wartości z innego zestawu. Zakres zaczyna się od wartości wskazanej przez pierwszy i na to, ale nie włączając wartości wskazanej przez ostatnie. Jeśli inne argumenty dotyczące konstruktora nie zostaną wpisane, ich domyślne argumenty zostaną zastosowane. Argument szablonu to klasa iterator. Poniższy program pokazuje ten konstruktor w akcji z jego inicjalizacją:

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

set st = „czerwony”, „pomarańczowy”, „żółty”, „zielony”, „niebieski”, „indygo”, „fiolet”;
set :: iterator iterf = st.zaczynać(); ITERF ++;
set :: iterator iterl = st.koniec(); ITERL-;
SET ST2 (ITERF, ITERL); // inicjalizacja
for (set :: iterator iter = st2.zaczynać(); iter != ST2.koniec(); ITER ++)
Cout << *iter << ", ";
Cout << endl;
powrót 0;

Wyjście to:

Zielony, indygo, pomarańczowy, czerwony, fioletowy,

czego nie jest dokładnie tego, czego można było się spodziewać. Powód tego jest następujący:

Wejście to:

„Czerwony”, „Orange”, „żółty”, „zielony”, „niebieski”, „Indigo”, „Violet”

Można by to oczekiwać, że „czerwony” i „fioletowy” zostaną pominięte. Zamiast tego było to „niebieskie” i „żółte”, które zostały pominięte. Teraz, gdy zestaw nie zamówiony zostanie wprowadzony do zestawu, zostaje posortowany. Z posortowanej listy wartości na ekstremalnych końcach zostały pominięte.

Pusty zestaw i wstaw ()

Poniższy program tworzy pusty zestaw przed wstawianiem wartości:

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

SET ST;
St.wstaw („czerwony”); St.wstaw („pomarańczowy”); St.wstaw („żółty”); St.wstaw („zielony”);
St.wstaw („niebieski”); St.wstaw („Indigo”); St.wstaw („fiolet”);
for (set :: iterator iter = st.zaczynać(); iter != st.koniec(); ITER ++)
Cout << *iter << ", ";
Cout << endl;
powrót 0;

Wyjście to:

niebieski, zielony, indygo, pomarańczowy, czerwony, fioletowy, żółty,

Zauważ, że wyjście jest sortowane w kolejności rosnącej, podczas gdy wejście (pierwszy argument) nie zostało posortowane.

Wniosek

Inicjalizacja ma miejsce, gdy wartości są dodawane w miarę tworzenia zestawu. Po tej fazie wartości stają się sortowane w ramach domyślnych ustawień. Wspólne sposoby zainicjowania zestawu w C ++ obejmują konwencjonalną budowę i kopiowanie. Zostały wyjaśnione powyżej.

Chrys