P
knivil schrieb:
Und das Argument würde ich gerne hören.
Das habe ich schon gesagt, die Loesung ist zu kompliziert (aus meiner Sicht). Das liegt meines erachtens daran, dass das Iteratoren sich schlecht Kombinieren lassen.
Da stimme ich durchaus zu. Wenn allerdings die beiden Container/Iterator-Ranges das "natürliche" Ergebnis der vorherigen Schritte sind (was ja durchaus sein kann, die kennen wir ja nicht), dann müsste man eben diese vorherigen Schritte ggf. verkomplizieren, um etwas anderes als die beiden Ranges zu bekommen, mit dem man dann eine schönere Lösung verwirklichen könnte. Wie oben gesagt hätte man damit den unschönen Flecken nur verlagert (in die vorherigen Schritte), aber nicht entfernt.
Was hier bisher gepostet wurde, waren Lösungen für genau das Problem, das der TE gestellt hat (eine Funktion auf die Elemente von zwei oder mehr Ranges anzuwenden). Ob das nötig ist oder es eine grundlegend andere Lösung gibt ist eine andere Frage - die wir aber durchaus mal stellen können: @Eisflamme, was willst du erreichen? (Nicht wie - nämlich durch abfrühstücken der beiden Ranges)
Das Problem mit merge ist, dass bei Ueberlappung oder doppelten Elementen auch die Funktion mehrfach fuer den Wert aufgerufen wird. Das mag beabsichtigt sein oder eben nicht.
Ich denke, man kann davon ausgehen dass es beabsichtigt ist. Bzw. da der TE merge kennt, gehe ich mal davon aus, dass er auch andere Algorithmen der Standardbibliothek kennt, mit denen er die Ranges passend modifizieren kann.