Die Funktion der Löschelemente in C ++ STD -Set

Die Funktion der Löschelemente in C ++ STD -Set
Nachdem die Werte in einen Set in C ++ eingefügt wurden, werden die Werte in aufsteigender Reihenfolge intern sortiert, wenn die Einstellungen Standard sind. Die festgelegte Klasse in C ++ hat die ERASE () -Mitlerfunktion. Es verfügt über vier überlastete Varianten, die in diesem Artikel untersucht werden. Die Funktion löscht ein oder mehrere Elemente des festgelegten Objekts.

Ein Beispiel für einen Satz ist:

"Plum", "Blackberry", "Apricot", "Strawberry", "Peach", "Papaya", "Guava"

Es ist eine Reihe von Namen von Früchten. Jeder Wert hier wird als Schlüssel bezeichnet. Dies ist auch das Set buchstäblich in C++. Es ist auch die Array buchstäblich. Und es ist auch die Initializer_List.

Ein C ++ - Programm, das Sets und Zeichenfolgen erstellt, sollte wie folgt beginnen:

#enthalten
#enthalten
#enthalten
Verwenden von Namespace STD;

Die Einbeziehung der iOstream -Bibliothek ist für die Ausgabe (und die Eingabe) in das Terminal (Konsole) bestimmt. Die Einbeziehung der Set -Bibliothek ist für Sets gilt. Die Einbeziehung der String -Bibliothek ist für Zeichenfolgen. Wenn Zeiger auf char* anstelle der String -Klasse verwendet werden, dann sind es die Zeiger auf die Char -Literale, die sortiert werden und nicht die alphabetischen Literale selbst. Dies sind alle Unterbriebraren aus der Haupt-Standardbibliothek in C++. STD im Titel dieses Artikels bedeutet Standard. Die vierte Zeile ist keine Richtlinie. Es ist eine Aussage, die in einem Semikolon endet. Dies besteht darauf, dass jeder Name, dem der Standard -Namespace -Name nicht vorausgeht, aus dem Standard -Namespace liegt.

HINWEIS: Wenn Werte in das Set -Objekt eingefügt wurden, werden sie intern aufsteigend für die Standardeinstellungen sortiert.

size_type erase (const key_type & x)

Damit löscht der Schlüssel, dessen Name das Argument der ERASE () -Mitlerfunktion des Satzes ist. Der Programmierer muss im Voraus wissen, dass dieser Schlüssel im Set existiert. Die Funktion gibt die Anzahl der aus dem Satz gelöschten Elemente zurück. Das folgende Programm zeigt, wie diese Mitgliedsfunktion verwendet wird:

#enthalten
#enthalten
#enthalten
Verwenden von Namespace STD;
int main ()

setStst ("Plum", "Blackberry", "Apricot", "Strawberry", "Peach", "Papaya", "Guava");
int sz = st.Erase ("Papaya");
Cout<für (set :: iterator iter = st.Start(); Iter != ST.Ende(); Iter ++)
Cout<< *iter<< ", ";
Cout<Rückkehr 0;

Die Ausgabe ist:

1
Aprikose, Blackberry, Guava, Pfirsich, Pflaume, Erdbeere,

Iterator -Löschen (Iteratorposition)

Diese Mitgliedsfunktion löscht den Schlüssel, auf den der Iterator zeigt. Der folgende Code zeigt dies:

setStst ("Plum", "Blackberry", "Apricot", "Strawberry", "Peach", "Papaya", "Guava");
für (set :: iterator iter = st.Start(); Iter != ST.Ende(); iter ++)
Cout<< *iter<< ", ";
if ("Papaya" == *iter)
st.löschen (iter);

Cout<für (set :: iterator ite = st.Start(); ite != ST.Ende(); ITE ++)
Cout<< *ite<< ", ";

Cout<Die Ausgabe ist:

Aprikose, Blackberry, Guava, Papaya, Guava, Pfirsich, Pflaume, Erdbeere,
Aprikose, Blackberry, Guava, Pfirsich, Pflaume, Erdbeere,

"Papaya" wurde gelöscht. Wie es gelöscht wurde, nahm Guava ihren Platz durch die interne Sortierung ein. Deshalb ist Guava zweimal in der ersten Ausgabelinie erschienen.

Iterator -Löschen (const_iteratorposition)

Diese überlastete Mitgliederfunktion ist die gleiche wie die oben genannte Ausnahme, dass das Argument ein konstanter Iterator ist. Es gibt immer noch den normalen Iterator zurück. Der zurückgegebene Iterator verweist auf das nächste Element, nachdem der eine basierend auf der internen Sortierung gelöscht wurde. Das folgende Programm zeigt alles:

setStst ("Plum", "Blackberry", "Apricot", "Strawberry", "Peach", "Papaya", "Guava");
set :: iterator ite;
für (set :: const_iteratoriter = st.Start(); Iter != ST.Ende(); iter ++)
Cout<< *iter<< ", ";
if ("Papaya" == *iter)
ITE = ST.löschen (iter);

Cout<für (set :: iterator it = st.Start(); Es != ST.Ende(); es ++)
Cout<< *it << ", ";

Cout<Die Ausgabe ist:

Aprikose, Blackberry, Guava, Papaya, Guava, Pfirsich, Pflaume, Erdbeere,
Pfirsich
Aprikose, Blackberry, Guava, Pfirsich, Pflaume, Erdbeere,

Iterator -Löschen (const_iterator zuerst, const_iterator zuletzt)

"First" ist ein Iterator, der auf ein Element im sortierten Satz zeigt. "Last" ist ein Iterator, der auf ein Element in dem sortierten Set nach dem ersten zeigt. Die Argument -Iteratoren sind ständige Iteratoren. Diese Mitgliedsfunktion löscht einen Bereich, der das Element für „First“ enthält und das das Element für den letzten ausschließt. Der folgende Code zeigt dies:

setStst ("Plum", "Blackberry", "Apricot", "Strawberry", "Peach", "Papaya", "Guava");
für (set :: iterator it = st.Start(); Es != ST.Ende(); es ++)
Cout<< *it << ", ";
cout<set :: const_iteratoritb = st.Start(); set :: const_iteratorite = st.Ende();
ITB ++; ITB ++; ite--; ite--; ite--;
set :: iterator ite = st.löschen (ITB, ITE);
für (set :: iterator it = st.Start(); Es != ST.Ende(); es ++)
Cout<< *it << ", ";

Cout<Die Ausgabe ist:

Aprikose, Blackberry, Guava, Papaya, Pfirsich, Pflaume, Erdbeere,
Aprikose, Blackberry, Pfirsich, Pflaume, Erdbeere,

Der Bereich von „Guava, Papaya, Pfirsich“, ausgenommen „Pfirsich“, wurde entfernt.

Einen Wert ersetzen

Der in C ++ festgelegte Set hat keine Mitgliederfunktion, um einen Wert zu ersetzen. und es sollte nicht haben. Dies liegt daran, dass jedes Mal, wenn ein Wert eingefügt wird, eine vollständige Wiederaufnahme des Satzes (Liste) vorliegt (Liste). Es ist also nicht sinn. Wenn jedoch ein Wert gelöscht wird, kann ein neuer Wert eingefügt werden, der eine Positionsanpassung unterzogen wird. Im folgenden Programm wird „Blackberry“ gelöscht und „Wassermelone“ eingeführt. Die Gesamtgröße bleibt nach 7 gleich.

#enthalten
#enthalten
#enthalten
Verwenden von Namespace STD;
int main ()

setStst ("Plum", "Blackberry", "Apricot", "Strawberry", "Peach", "Papaya", "Guava");
st.löschen ("Blackberry"); st.Insert ("Wassermelone");
für (set :: iterator it = st.Start(); Es != ST.Ende(); es ++)
Cout<< *it << ", ";
cout<int sz = st.Größe();
Cout<Rückkehr 0;

Die Ausgabe ist:

Aprikose, Guava, Papaya, Pfirsich, Pflaume, Erdbeere, Wassermelone,
7

Abschluss

In C ++ befindet sich die festgelegte Klasse in der festgelegten Bibliothek der Hauptbibliothek C ++ -. Die SET -Klasse verfügt über vier überlastete ERASE () -Member -Funktionen. Ein einzelnes Element kann gelöscht werden. Eine Reihe von Elementen ohne das letzte Element kann ebenfalls gelöscht werden. Nach jeder Löschaktion wird der Satz intern neu sortiert.

Der in C ++ festgelegte Set hat keine Mitgliederfunktion, um einen Wert zu ersetzen. und es sollte nicht haben. Dies liegt daran, dass jedes Mal, wenn ein Wert eingefügt wird, vollständig neu sortiert wird (Liste). Es ist also nicht sinn.