Ich baue eine std::list
von Elementen (Graph Komponentenstrukturen), die periodisch zusammengeführt werden. Die Idee ist, wenn ich einen Knoten entdecke, der zwei Komponenten verbindet, werden sie eine einzige Komponente und meine Liste zählt meine Komponenten auf. Jede Komponente hat eine Handle (in diesem Fall eine std::list<component>::iterator
) zu seiner "übergeordneten" Komponente, die festgelegt wird, sobald es zusammengeführt wird. Auf diese Weise kann ich feststellen, zu welcher Komponente ein bestimmter Knoten gehört.Entfernen Sie das Element in std :: list, während es zugewiesen bleibt
Am Ende, was ich suche, ist der Betrieb auf std::list
, die ich einen Iterator von Artikel N
, nehmen kann und entfernen Sie sich aus der Liste, aber ohne es Aufheben der Zuordnung: die Struktur des Restes der Liste wird genau so modifiziert, wie es normalerweise entfernt wird.
Vorzugsweise etwas weniger hässlich als die Neuzuweisung des Elements, Kopieren aus der Liste und Aufruf der echten remove
oder erase
.
Vielleicht kann ich es mit splice
erreichen. Ich müsste die zu entfernenden Elemente zu einem "Müll" list
spleißen, oder?
'splice'-in eine _junk-Liste_ klingt nach rechts ... –
Und solch ein Ansatz hat die unwahrscheinliche Möglichkeit, dass die Verwendung von inkompatiblen Allokatoren das Kopieren erzwingen würde. Trotzdem ... gibt es ein paar zusätzliche Hinweise, die gemischt werden. Nun ... tut mir nicht weh * eine Möglichkeit zu haben, über meine nicht vollständig verwaisten Knoten zu iterieren. –
Warum ist die Verwendung der Liste anstelle der Liste nicht für Sie geeignet? –