Satz erkennen, einlegen scheitern
Gibt es eine einfache Möglichkeit zu erkennen, wenn ein Satz einfügen nicht auftreten, da das Element eingefügt werden bereits in dem Satz? Zum Beispiel, würde ich mag, um eine Meldung anzuzeigen, die dem Benutzer zeigt, dass die insert-Fehler, so dass Sie finden und entfernen Sie Duplikate in Ihren Daten einfacher. Hier einige pseudo-code zeigen, was ich gerne tun würde:
try
{
items.insert(item)
}
catch insert_failed_item_already_in_set
{
//show user the failed item
}
cplusplus.com/reference/stl/set/insert
Etwas falsch mit Ihrem C++ - standard-library-Referenz? Sie brauchen nicht einmal den Rückgabetyp von Funktionen, die Sie verwenden?
Sorry für die Frage. Ich habe nicht verwendet, legt sehr viel. Ich kenne die Datenstruktur gut, nur eben nicht wie C++ erkannt einlegen scheitern. Ich werde nicht Fragen Sie diese hier nicht mehr. Vielen Dank an alle die sich die Zeit nahmen zu Antworten.
Etwas falsch mit Ihrem C++ - standard-library-Referenz? Sie brauchen nicht einmal den Rückgabetyp von Funktionen, die Sie verwenden?
Sorry für die Frage. Ich habe nicht verwendet, legt sehr viel. Ich kenne die Datenstruktur gut, nur eben nicht wie C++ erkannt einlegen scheitern. Ich werde nicht Fragen Sie diese hier nicht mehr. Vielen Dank an alle die sich die Zeit nahmen zu Antworten.
InformationsquelleAutor 01100110 | 2012-03-06
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es diese
insert
Signatur instd::set
pair<iterator,bool> insert ( const value_type& x );
Test der
second
des zurückgegebenen Paares, auf true gesetzt werden sollte, wenn erfolgreich eingesetzt.InformationsquelleAutor Nim
Unterschrift für
set::insert
ist:So, würde der code so Aussehen:
set::insert
Sie haben Recht, natürlich.
InformationsquelleAutor Robᵩ
vom cplusplus:
bezogen auf insert(const T& Wert)
InformationsquelleAutor andrea.marangoni
Als set insert return-pair-Mädchen, können Sie überprüfen den Zustand des zweite element des Paares mit get<1> was ist Boolean , wenn Ihre Einlage erfolgt ist oder nicht .
InformationsquelleAutor Parth
STL
set<>.insert(elem)
zurückpair<iterator,bool>
wobei der zweite Wert des Paares isttrue
wenn das element wurde erfolgreich eingefügt false ansonsten.InformationsquelleAutor malenkiy_scot
Einer insert-operation auf einem Satz gibt ein paar, mit den
first
einen iterator verweist entweder auf das neu eingefügte element bzw. auf das äquivalente element bereits in der Menge. Diesecond
element des Paares festgelegt isttrue
wenn ein neues element eingefügt wurde oderfalse
wenn ein gleichwertiges element bereits existiert. So können Sie diesecond
element, um festzustellen, ob es Hinzugefügt wurde.Beispiel:
InformationsquelleAutor Prashant Shubham
Da set-Container nicht erlauben, eine doppelte Werte, die einfügen-operation prüft für jedes element eingefügt, ob ein weiteres element existiert bereits in die container mit dem gleichen Wert, wenn dem so ist, wird das element nicht eingefügt, und -wenn die Funktion einen Wert zurückgibt - einen iterator, um es zurückgegeben.
ein Beispiel finden Sie hier:
http://www.cplusplus.com/reference/stl/set/insert/
InformationsquelleAutor Stefan Birladeanu
Es ist leicht genug, um zu überprüfen, ob ein Element bereits in einem set. Wenn das das einzige ist, was du bist suchen für die gibt es keine Notwendigkeit für die try/catch.
Oder können Sie prüfen, legen Sie den Rückgabewert, der ein paar in die
second
Hälfte des Paares ist oder nicht, ob das einfügen erfolgreich war:Sich die beiden Methoden, ist die zweite Methode ist kompakter und effizienter als die erste Methode erfordert zwei lookups, während
.find
, und anderen während der.insert
.InformationsquelleAutor Nic Foster