FunctionalPlus - helps you write concise and readable C++ code
-
Hallo zusammen,
bei der Arbeit an meinen normalen Projekten sind ein paar Funktionen zusammengekommen, die ich immer wieder mal benötigt habe. Jetzt hab ich mir gedacht, dass ich das ganze auch veröffentlichen könnte, also hier ist es: https://github.com/Dobiasd/FunctionalPlus
Über feedback würde ich mich sehr freuen. Das ist meine erst lib und ich würde sie gerne verbessern und dazulernen.
-
Ich habe mir deine Library jetzt nicht im Detail angeschaut, aber es scheint mir ähnliche Sachen zu tun wie boost range oder das neuere range-v3 von Eric Niebler, welches eventuell mal STL Version 2 werden soll. Nur das deine Library immer Kopien von den Containern macht (schien zumindest bei den paar Beispielen die ich mir angeschaut habe).
Die Namensgebung könnte an manchen Stellen auch besser sein. In deinem Silent Night Beispiel habe ich immer noch nicht verstanden was
AllBymachen soll.
-
Vielen Dank fürs feedback. AllBy macht das gleiche wie All, nur dass es die Elemente erstmal durch ein unäres Prädikat schickt. Hab diese Erklärung jetzt in die README mit aufgenommen.
Das mit den Kopien habe ich gemacht, weil ich zumindest in den Code-Teilen, die nicht performance-kritisch sind, möglichst pure programmiere und lieber neue Objekte erzeuge als vorhandere zu mutieren.
range-v3 sieht interessant aus.
-
https://github.com/Dobiasd/FunctionalPlus#performance
Bitte Messcode zeigen.
-
Dobi schrieb:
Das mit den Kopien habe ich gemacht, weil ich zumindest in den Code-Teilen, die nicht performance-kritisch sind, möglichst pure programmiere und lieber neue Objekte erzeuge als vorhandere zu mutieren.
Das ist ja gerade der Witz bei den von mir verlinkten Libraries. Viele Operationen muss man gar nicht sofort anwenden, sondern kann dies erst beim Iterieren über die Elemente tun. Einfache Beispiele sind Werte weglassen oder hinzufügen. Ich brauch keine Kopie der Daten sondern nur ein Iterator der schlau genug ist die nicht benötigten Werte zu überspringen. Da die komplette Implementierung der beiden Ranges Libraries aber sicherlich äußerst kompliziert ist, ist es schon OK, dass du Kopien machst.
-
@Sebi: OK, das ist natürlich wesentlich cooler. Ist ja schon eine Art lazy evaluation.
Arcoth schrieb:
https://github.com/Dobiasd/FunctionalPlus#performance
Bitte Messcode zeigen.