Jak wstawić dane do zestawu C ++

Jak wstawić dane do zestawu C ++
Poniżej znajduje się zestaw sześciu nazw kolorów:
„Gray”, „White”, „Aqua”, „Black”, „Fuchsia”, „Blue”

To jest zestaw strun. W C ++ można mieć zestaw liczb całkowitych, zestaw pływaków, zestaw podwójnych itp. To także literał tablicy w C++. Jest to również lista inicjalizator. To też jest ustalone dosłowne, choć nie zostało posortowane.

Aby mieć zestaw powyższych ciągów, program C ++ powinien rozpocząć się w następujący sposób:

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

Pierwsze trzy wiersze to dyrektywy. Ostatni wiersz jest stwierdzeniem. Pierwsze trzy wiersze obejmują niezbędne biblioteki. Ostatni wiersz nalega na użycie standardowej przestrzeni nazw.

Klasa SET ma wiele przeciążonych funkcji członka insert (). Tylko cztery, które są najbardziej odpowiednie, zostaną wyjaśnione w tym artykule. Cztery wyjaśnione są dla zestawu, a nie multiset.

Zestaw jest zawsze sortowany wewnętrznie, domyślnie rosnący. Za każdym razem, gdy wartość jest wkładana, zestaw jest ponownie sortowany.

void insert (inicitizer_list)

Ta funkcja członka przyjmuje jako argument Initicizer_list, który jest literacją tablicy (tak samo jak Set Lottal). Może również wstawić wartości do pustego zestawu. Funkcja zwraca pustkę. Poniższy program pokazuje funkcję członka w akcji:

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

ustawić st;
St.wstaw („Gray”, „White”, „Aqua”, „Black”, „Fuchsia”, „Blue”);
dla (set:: iterator it = st.zaczynać(); To != st.koniec(); it ++)
Cout << *it << ", ";

Cout << endl;
powrót 0;

Wyjście to:

Aqua, czarny, niebieski, fuksia, szary, biały,

Należy zauważyć, że wyjście jest w kolejności rosnącej literałów smyczkowych. Jeśli bibliotek.

Klasa SET ma konstruktor, który może wziąć udział w liście inicitizer_. W takim przypadku nie będzie potrzeby wstępnego wstawienia. Poniższy kod to ilustruje:

ustawić St („Gray”, „White”, „Aqua”, „Black”, „Fuchsia”, „Blue”);
dla (set:: iterator it = st.zaczynać(); To != st.koniec(); it ++)
Cout << *it << ", ";

Cout << endl;

Wyjście jest nadal,

Aqua, czarny, niebieski, fuksia, szary, biały,

dla tego samego wejścia; Wzast o mocy wyjściowej.

szablon insert void (pierwszy inputiterator, inuputiterator last)

Ta funkcja członka wstawiła zakres od innego zestawu. Zakres drugiego zestawu rozpoczyna się od miejsca, w którym pierwszy wskazuje iterator, ale po prostu nie uwzględniając wartości, na którą ostatnio wskazuje iterator. Funkcja zwraca pustkę. Poniższy kod to ilustruje:

ustawić ST2 („Purple”, „Navy”, „Yellow”, „Olive”, „Teal”, „Red”, „Silver”);
dla (set:: iterator it = st2.zaczynać(); To != ST2.koniec(); it ++) cout << *it << ", "; cout << endl;
ustawić:: iterator ITB2 = ST2.zaczynać(); ustawić:: iterator Ite2 = st2.koniec();
ITB2 ++; ITB2 ++; Ite2-; Ite2-; Ite2-;
ustawić St („Gray”, „White”, „Aqua”, „Black”, „Fuchsia”, „Blue”);
dla (set:: iterator it = st.zaczynać(); To != st.koniec(); it ++) cout << *it << ", "; cout << endl;
St.wstaw (ITB2, ITE2);
dla (set:: iterator it = st.zaczynać(); To != st.koniec(); it ++) cout << *it << ", "; cout << endl;

Wyjście to:

Marynarka wojenna, oliwka, fioletowa, czerwona, srebrna, turkusowa, żółta,
Aqua, czarny, niebieski, fuksia, szary, biały,
Aqua, czarny, niebieski, fuksia, szary, fioletowy, czerwony, biały,

Posortowany zasięg (fioletowy, czerwony, srebrny) z zestawu ST2, bez „srebrnego” został włożony do zestawu ST ST. ST został automatycznie ponownie posortowany, aby mieć trzeci wiersz wyjścia.

Iterator wstawka (pozycja Const_iterator, const value_type i x)

Drugim argumentem tej funkcji członka jest zmienna stałego punktu do typu (char). Ta funkcja członka powinna pasować do wskaźnika ciągów w pozycji wskazanej przez iterator, który jest pierwszym argumentem. Prawdopodobnie nie zadziała tak, jak się pojawia z powodu sortowania, które ma się odbyć po wstawieniu. Funkcja członka zwraca iterator, który wskazuje na włożony element. Poniższy program ilustruje to:

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

const char* str = „fiolet”;
ustawić St („Gray”, „White”, „Aqua”, „Black”, „Fuchsia”, „Blue”);
dla (set:: iterator it = st.zaczynać(); To != st.koniec(); it ++) cout << *it << ", "; cout << endl;
ustawić:: const_iterator ITB = ST.zaczynać(); ITB ++; ITB ++;
ustawić:: iterator iter = st.wstaw (ITB, str);
Cout << *iter << endl;
dla (set:: iterator it = st.zaczynać(); To != st.koniec(); it ++) cout << *it << ", "; cout << endl;
powrót 0;

Wyjście to:

Aqua, czarny, niebieski, fuksia, szary, biały,
fioletowy
Aqua, czarny, niebieski, fuksia, szary, fioletowy, biały,

Iterator Wstaw (pozycja Const_iterator, Value_Type && x)

Ta funkcja członka jest podobna do powyższego, ale drugim argumentem jest w rzeczywistości litera wartości, a nie zmienna. Poniższy program ilustruje to:

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

ustawić St („Gray”, „White”, „Aqua”, „Black”, „Fuchsia”, „Blue”);
dla (set:: iterator it = st.zaczynać(); To != st.koniec(); it ++) cout << *it << ", "; cout << endl;
ustawić:: const_iterator ITB = ST.zaczynać(); ITB ++; ITB ++;
ustawić:: iterator iter = st.wstaw (ITB, „fioletowy”);
Cout << *iter << endl;
dla (set:: iterator it = st.zaczynać(); To != st.koniec(); it ++) cout << *it << ", "; cout << endl;
powrót 0;

Wyjście to:

Aqua, czarny, niebieski, fuksia, szary, biały,
fioletowy
Aqua, czarny, niebieski, fuksia, szary, fioletowy, biały,

Wniosek

Zestaw w C ++ można stworzyć pusty. Jeśli zostanie utworzony pusty, wówczas funkcja elementu insert () może być użyta do wstawienia początkowych elementów zestawu. W takim przypadku lista inicitizer_. Odpowiednia funkcja przeciążona elementem zwraca void.

Zestaw jest zawsze sortowany domyślnie wewnętrznie wstępujący. Za każdym razem, gdy wartość jest wkładana, zestaw jest ponownie sortowany automatycznie. Biblioteka zestawu musi zostać uwzględniona, aby zestaw był zakodowany.

Istnieją trzy inne powszechnie stosowane metody ustawione insert (). Jeden zwraca pustkę, a pozostałe dwa zwracają iterator wskazujący na włożony element. Ten, który zwraca pustkę, ma zakres od innego zestawu i wkłada do zestawu zainteresowania. Zakres jest identyfikowany w składni przez iteratory, pierwszy i ostatni. Ostatni po prostu nie jest uwzględniony w wstawionym zakresie.

Dla pozostałych dwóch funkcji członka jeden wkłada zmienną wartości, a druga sam wkłada wartość dosłowną. Oba wstawają do niektórych zamierzonych pozycji. Zamierzone pozycje nie mogą być szanowane, ponieważ sortowanie ma miejsce po wstawce.