2016-05-14 11 views
0

In C++ habe ich eine STL multiset<int, cmp>. Ich habe einen benutzerdefinierten Vergleichsoperator definiert, so dass zwei verschiedene Ganzzahlen immer noch gleich sind. Wie kann ich bei einem solchen Fall die interne Reihenfolge von zwei ganzen Zahlen im Satz ändern, wenn sie gleich sind?Ändern Sie die Reihenfolge von zwei gleichen Elementen in einem STL-Multiset

Ich lese über die Option, einen zweiten Wert zum Multiset hinzuzufügen und seinen Wert entsprechend meiner gewünschten Reihenfolge einzustellen, das scheint jedoch ziemlich kompliziert zu sein. Gibt es eine einfachere Lösung, z.B. Löschen und Einfügen der beiden Elemente in einer bestimmten Reihenfolge?

+5

Ein 'Set' nimmt nur einzigartige Elemente. Wenn Sie '1' und' 2' einfügen und 'cmp' sagt, dass sie gleich sind, wird' 2' nicht eingefügt. Vielleicht suchen Sie nach "multi_set"? – nwp

+1

Interne Reihenfolge von was? Sie können nicht zwei gleiche Elemente in einem Satz haben. –

+0

Ja, Sie haben Recht. Ein Multiset ist was ich meine, danke :) –

Antwort

2

Die Reihenfolge der Elemente kann nur geändert werden, indem Sie sie entfernen und erneut einfügen.

Wenn Sie gleiche Elemente in eine Multimenge einfügen, werden die hinzugefügten Elemente nach vorhandenen Elementen eingefügt, oder Sie können die Funktionen insert, die einen Hinweis enthalten, steuern, wo das Element wieder eingefügt wird.