Lambda-Iterator?
-
pumuckl schrieb:
Furble Wurble schrieb:
Hättest Du nicht einfach auch einen eigenen Iterator aus dem Ärmel schütteln können?
Das dürfte in die oben angedeutete Richtung von boosts function_output_iterator gehen.
Ja, das soll auch so sein.
Ich habe ja sogar die Bezeichner genauso gewählt.Ich will nur zeigen, dass der Anwendungsfall keine Raketentechnik erfordert.
-
Er hat doch von Anfang an gesagt, dass er ein wenig mein Problem missverstanden hatte. Und dann hat er trotzdem (!) seine MultiRange-Lösung weiterentwickelt, u.a. deswegen, weil ich offen bekundet habe, dass die mich unabhängig von dem Ausgangsproblem sehr interessiert.
Jetzt ist sie da, niemand hat behauptet, dass das die kürzeste Variante zur Lösung meines Problems ist und wer sie für andere Zwecke gerne benutzen würde, kann das doch gerne tun.
Von mir jedenfalls danke, denn evtl. werde ich sie für andere Bereiche Mal einsetzen und ansonsten hat sie mich auf alle Fälle inspiriert und ich habe dadurch auch wieder einiges Neues gelernt (z.B. ::template). Also hört doch Mal mit dem Rumgehacke auf.

-
Furble Wurble schrieb:
Ja, das soll auch so sein.
Ich habe ja sogar die Bezeichner genauso gewählt.Ich will nur zeigen, dass der Anwendungsfall keine Raketentechnik erfordert.
Aber warum dann selber schreiben wenns das schon gibt?

-
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.
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.
-
Eisflamme schrieb:
Also hört doch Mal mit dem Rumgehacke auf. :p
Ich denke der Thread ist informativ, sachlich und höflich... Und man muss ja nicht alles mit Smilies zuspammen!
Jetzt gibt es schon drei mögliche Lösungswege. Und jeder einzelne lohnt sich anzuschauen...
pumuckl schrieb:
Furble Wurble schrieb:
Ja, das soll auch so sein.
Ich habe ja sogar die Bezeichner genauso gewählt.Ich will nur zeigen, dass der Anwendungsfall keine Raketentechnik erfordert.
Aber warum dann selber schreiben wenns das schon gibt?

Wenn der TE gewusst hätte, wie simpel sich so ein Iterator schreiben lässt, gäbe es diesen Thread gar nicht - deswegen das Beispiel als Anregung.
Ausserdem hoffe ich, dass meine Version auch mit Eisflammes MSVC funktioniert.
-
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.