it-swarm.com.de

so hängen Sie ein Objekt der Liste <T> an ein anderes an

in C++ habe ich zwei list<T>-Objekte A und B, und ich möchte alle Mitglieder von B am Ende von A hinzufügen. Ich habe einige verschiedene Quellen gesucht und keine einfache Lösung gefunden (z. B. A.append(B);). Dies überrascht mich ein wenig.

Was ist der beste Weg, dies zu tun?

Zufällig kümmere ich mich nicht um B danach (es wird in der nächsten Zeile gelöscht). Wenn es also eine Möglichkeit gibt, dies für eine bessere Perfektion zu nutzen, bin ich auch daran interessiert.

77
BCS

Wenn Sie Kopien von Elementen in B anhängen möchten, können Sie Folgendes tun:

a.insert(a.end(), b.begin(), b.end());

Wenn Sie Elemente verschieben von B bis zum Ende von A (gleichzeitig mit B leeren) möchten, können Sie Folgendes tun:

a.splice(a.end(), b);

In Ihrer Situation wäre das Spleißen besser, da nur ein paar Zeiger in den verknüpften Listen angepasst werden müssen.

165
UncleBens

ein Beispiel mit Boost

std::list<T> A; // object A is a list containing T structure
std::list<T> B; // object B is a list containing T structure

// append list B to list A
BOOST_FOREACH(auto &listElement, B) { A.Push_back( listElement ); }
0
serup