Costruisco un std::list
di elementi (strutture componenti del grafico) che vengono unite periodicamente. L'idea è che se scopro un nodo che collega due componenti diventano un unico componente e il mio elenco enumera i miei componenti. Ogni componente ha un handle (in questo caso uno std::list<component>::iterator
) al suo componente "parent", che viene impostato una volta unito. In questo modo, per determinare il componente che appartiene a un particolare nodo, salgo questa catena.Rimuovi elemento in std :: list lasciandolo allocato
Alla fine quello che sto cercando è l'operazione su std::list
che mi permette di prendere un iteratore di elemento N
, e rimuovo dalla lista, ma senza deallocando esso: la struttura del resto della lista viene modificato esattamente nello stesso modo in cui viene rimosso normalmente.
Preferibilmente qualcosa di meno brutto di ridistribuire l'elemento, copiarlo dall'elenco e chiamare il reale remove
o erase
.
Forse riesco a farlo con splice
. Avrei bisogno di unire gli elementi da rimuovere in una "spazzatura" list
, no?
'splice'-ing in una _junk list_ suona bene ... –
E un tale approccio ha l'improbabile possibilità che l'uso di allocatori incompatibili costringa a copiare. Ancora ... ci sono alcuni suggerimenti extra che vengono mescolati. Beh ... non * fa male * avere un modo per scorrere i miei nodi non completamente orfani. –
Perché utilizzare l'elenco anziché l'elenco non è adatto a te? –