splice/merge
-
hi,
ich hätte gerne den aufbau dieser 2 list-operationen, um sie nachzucoden.
kann da wer helfen?schönen abend noch!
-
die include-dateien deines compilers werden dir helfen

-
nein nicht wirklich.
über merge find ich nur eine deklaration und keinen code, zu splice steht zwar ein bisschen was, aber nicht wirklich transparent.
zum beispiel "this->_M_transfer", wobei _M_transfer niergends deklaiert ist.
dachte da eher an richtigen code
-
splice und merge ist net wirklich kompliziert.
splice geht im endeffekt intern so:
void splice(iterator position, list& x) { //mal angenommen iterator ist friend der liste und hat ein //private member das auf das momentane element zeigt ListElement* pos=iterator.element; ListElement* next=pos->next; pos->next=list.first; list.first->previous=pos; list.last->next=next; next->previous=list.last; list.first=0; list.last=0; }merge kannst du dir selbst überlegen, ist im endeffekt auch nichts anderes
-
danke für dein bsp.
list bietet ja unter anderem auch die funktion insert.
kann man die hier benutzen?void splice(iterator position, list& x) { iterator it(x.begin()); for( ; it != x.end(); ++it) insert(position,*it); x.clear(); }
-
NoReturn schrieb:
danke für dein bsp.
list bietet ja unter anderem auch die funktion insert.
kann man die hier benutzen?void splice(iterator position, list& x) { iterator it(x.begin()); for( ; it != x.end(); ++it) insert(position,*it); x.clear(); }Das wäre nicht im Sinne von Splice, das tolle an Splice ist ja, dass du einfach nur zwei Zeiger ändern musst um die Liste in eine andere einzuhängen.
Du hängst dabei Element für Element ein.
-
ok leuchtet ein. danke.