Funkcja wymierania w zestawie C ++ STD

Funkcja wymierania w zestawie C ++ STD
Po wstawianiu wartości do zestawu w C ++ wartości są sortowane wewnętrznie w kolejności rosnącej, gdy ustawienia są domyślne. Klasa zestawu w C ++ ma funkcję członka Erase (). Ma cztery przeciążone warianty, które są badane w tym artykule. Funkcja usuwa jeden lub więcej elementów obiektu SET.

Przykładem zestawu jest:

„Plum”, „BlackBerry”, „Morelot”, „Strawberry”, „Peach”, „Papaya”, „Guava”

Jest to zestaw nazw owoców. Każda wartość tutaj nazywa się kluczem. To jest również ustalone dosłowne w C++. To też jest litera tablica. I jest to także lista inicjalizator.

Program C ++, który tworzy zestawy i struny, powinien zaczynać się w następujący sposób:

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

Włączenie biblioteki iostream jest przeznaczone do wyjścia (i wejścia) do terminala (konsola). Włączenie biblioteki zestawu jest przeznaczone dla zestawów. Włączenie biblioteki ciągów dotyczy ciągów. Jeśli zamiast klasy sznurkowej użyte są wskazówki do char*, to wskaźniki do literałów charytatywnych będą sortowane, a nie same literały alfabetyczne smyczkowe. Są to wszystkie sub-library z głównej standardowej biblioteki w C++. STD w tytule tego artykułu oznacza standard. Czwarta linia nie jest dyrektywą. Jest to stwierdzenie, które kończy się w półkolisie. Twierdzi to, że każda nazwa, która nie jest poprzedzona standardową nazwą przestrzeni nazw, pochodzi ze standardowej przestrzeni nazw.

Uwaga: Gdy wartości zostały włożone do obiektu Set, są one sortowane wstępy, wewnętrznie, dla ustawień domyślnych.

Size_type Erase (const key_type i x)

To usuwa klucz, którego nazwa jest argumentem funkcji członkowskiej Erase (). Programista musi z góry wiedzieć, że ten klucz istnieje w zestawie. Funkcja zwraca liczbę elementów wymazanych z zestawu. Poniższy program pokazuje, jak korzystać z tej funkcji członka:

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

setst („śliwka”, „blackberry”, „apricot”, „Strawberry”, „Peach”, „papaya”, „guava”);
int sz = st.usunąć („papaya”);
Cout<for (set :: iterator iter = st.zaczynać(); iter != st.koniec(); ITER ++)
Cout<< *iter<< ", ";
Cout<powrót 0;

Wyjście to:

1
morel, jeżyna, guawa, brzoskwinia, śliwka, truskawka,

Iterator wymazujący (pozycja iteratora)

Ta funkcja członka usuwa klucz, na który wskazuje iterator. Poniższy kod to ilustruje:

setst („śliwka”, „blackberry”, „apricot”, „Strawberry”, „Peach”, „papaya”, „guava”);
for (set :: iterator iter = st.zaczynać(); iter != st.koniec(); ITER ++)
Cout<< *iter<< ", ";
if („papaya” == *iTer)
St.usunąć (itera);

Cout<for (set :: iterator Ite = st.zaczynać(); Ite != st.koniec(); Ite ++)
Cout<< *ite<< ", ";

Cout<Wyjście to:

morel, jeżyna, guawa, papaja, guawa, brzoskwinia, śliwka, truskawka,
morel, jeżyna, guawa, brzoskwinia, śliwka, truskawka,

„Papaya” została usunięta. Gdy został usunięty, Guava zajął swoje miejsce przez wewnętrzne sortowanie. Dlatego Guava pojawiła się dwukrotnie w pierwszej linii wyjściowej.

Iterator Erase (pozycja Const_iterator)

Ta przeciążona funkcja członka jest taka sama jak powyższa, z wyjątkiem tego, że argument jest stałym iteratorem. Nadal zwraca normalny iterator. Zwrócony iterator wskazuje na następny element po usunięciu na podstawie wewnętrznego sortowania. Poniższy program ilustruje to wszystko:

setst („śliwka”, „blackberry”, „apricot”, „Strawberry”, „Peach”, „papaya”, „guava”);
set :: Iterator Ite;
for (set :: const_iteratoriter = st.zaczynać(); iter != st.koniec(); ITER ++)
Cout<< *iter<< ", ";
if („papaya” == *iTer)
Ite = st.usunąć (itera);

Cout<for (set :: iterator it = st.zaczynać(); To != st.koniec(); it ++)
Cout<< *it << ", ";

Cout<Wyjście to:

morel, jeżyna, guawa, papaja, guawa, brzoskwinia, śliwka, truskawka,
brzoskwinia
morel, jeżyna, guawa, brzoskwinia, śliwka, truskawka,

Iterator Erase (Const_iterator pierwszy, Const_iterator Last)

„First” to iterator wskazujący na element w sortowanym zestawie. „Last” to iterator wskazujący na element w sortowanym zestawie po pierwszym. Iteratory argumentów są stałymi iteratorami. Ta funkcja członka usuwa zakres, który zawiera element „pierwszy” i który wyklucza element na ostatni. Poniższy kod to ilustruje:

setst („śliwka”, „blackberry”, „apricot”, „Strawberry”, „Peach”, „papaya”, „guava”);
for (set :: iterator it = st.zaczynać(); To != st.koniec(); it ++)
Cout<< *it << ", ";
cout<set :: const_iteratoritb = st.zaczynać(); set :: const_iteratorite = st.koniec();
ITB ++; ITB ++; Ite--; Ite--; Ite--;
set :: iterator Ite = st.usunąć (ITB, ITE);
for (set :: iterator it = st.zaczynać(); To != st.koniec(); it ++)
Cout<< *it << ", ";

Cout<Wyjście to:

morel, jeżyna, guawa, papaja, brzoskwinia, śliwka, truskawka,
morel, jeżyna, brzoskwinia, śliwka, truskawka,

Zakres „guawy, papai, brzoskwini”, z wyłączeniem „brzoskwini”, został usunięty.

Zastępując wartość

Zestaw w C ++ nie ma żadnej funkcji członka, aby zastąpić wartość; I to nie powinno. Wynika to z faktu, że za każdym razem, gdy wartość jest wstawiana, odbywa się całkowite ponowne sortowanie zestawu (lista). Zatem nie ma sensu zastąpić wartość, której pozycja zmieni się po ponownym sortowaniu. Niemniej jednak, jeśli wartość zostanie usunięta, można wstawić nową wartość, która ulegnie regulacji pozycji. W poniższym programie „BlackBerry” jest wymazany, a „Watermelon” jest wstawiany. Całkowity rozmiar pozostaje taki sam o 7.

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

setst („śliwka”, „blackberry”, „apricot”, „Strawberry”, „Peach”, „papaya”, „guava”);
St.usuń („Blackberry”); St.wstaw („Watermelon”);
for (set :: iterator it = st.zaczynać(); To != st.koniec(); it ++)
Cout<< *it << ", ";
cout<int sz = st.rozmiar();
Cout<powrót 0;

Wyjście to:

Morelot, guawa, papaja, brzoskwini, śliwka, truskawka, arbuz,
7

Wniosek

W C ++ klasa zestawu znajduje się w bibliotece zestawu głównej standardowej biblioteki C ++. Klasa SET ma cztery przeciążone funkcje członkowskie (). Jeden element można usunąć. Można również usunąć szereg elementów z wyłączeniem ostatniego elementu. Po każdej akcji usuwania zestaw jest ponownie sortowany wewnętrznie.

Zestaw w C ++ nie ma żadnej funkcji członka, aby zastąpić wartość; I to nie powinno. Wynika to z faktu, że za każdym razem, gdy wartość jest wkładana, następuje całkowite ponowne sortowanie zestawu (lista). Zatem nie ma sensu zastąpić wartość, której pozycja zmieni się po ponownym sortowaniu.