Teilbereich einer std::list sortieren
-
Ich habe zwei Iteratoren einer std::list (nicht begin() und end()) und möchte alles zwischendrin sortieren.
Also
std::list<int> l; // l ist bekannt std::list<int>::iterator from=std::next(l.begin()), to =std::prev(l.end()); // z.B. std::sort(from, to); // geht nicht l.sort(from, to); // geht nicht
Wie kann ich das für std::list machen?
Es handelt sich in meinem Code zwar um eine std::list, aber schön wäre, wenn das auch allgemein gehen würde.
-
Std::sort sortiert keine Listen, da diese keine random access iteratoren hat.
-
split die liste in 3 teile [begin(), from) [from,to),[to,end()) sortiere dann die mitlere list mit list::sort und merge die Listen dann wieder.
-
otze schrieb:
merge die Listen dann wieder.
... das funktioniert natürlich nicht, da beim Mergen die Listen sortiert werden. Es soll aber das mittlere Stück unverändert bleiben und für sich sortiert sein.
Darf man fragen, wofür du das brauchst?
-
War mit dem mergen vielleicht splicen gemeint? So würde es funktionieren.
-
Flashput schrieb:
War mit dem mergen vielleicht splicen gemeint? So würde es funktionieren.
Ja, das funktioniert.