Ich habe zwei Klassen A
und B
, und ein impliziter Konvertierungsoperator existiert, um von einem zum anderen zu gehen, so dass:
Gibt es eine Standardmethode zum Konvertieren von std::list<A>
in std::list<B>
? (Oder sogar von std::vector<A>
zu std::list<B>
).
Ich weiß, ich kann durch die Liste iterieren und die zweite Liste Element für Element erstellen, aber ich frage mich, ob es eine elegantere Lösung gibt.
Leider Ich kann nicht boost
verwenden, aber aus Neugier als Bonusfrage, wenn Boost damit klarkommt, würde ich mich freuen, das auch zu wissen.
Nun, ja. Jeder Sequenzcontainertyp verfügt über einen Schablonenkonstruktor, der ein Paar Iteratoren (einen Iteratorbereich) als Eingabe akzeptiert. Es kann verwendet werden, um unabhängig von den Sequenztypen eine Sequenz aus einer anderen zu konstruieren, solange die Sequenzelementtypen ineinander konvertierbar sind. Wie zum Beispiel
%Vor% Auch Sequenzcontainer haben assign
member function, was dasselbe mit Zuweisungssemantik macht (im Gegensatz zur Initialisierungssemantik).
Tags und Links c++ list containers