Gegeben eine hana::tuple
Angabe der Form einer N-dimensionalen Box (z. B. (2,3,2)
in 3D
) zur Kompilierzeit, ich möchte ein Tupel von Tupeln mit allen Koordinatenkombinationen zur Kompilierzeit erzeugen. (0,0,0) (0,0,1) (0,1,0) (0,1,1) (0,2,0) (0,2,1) (1,0,0) (1,0,1) (1,1,0) (1,1,1) (1,2,0) (1,2,1)
Koordinatenerzeugung zur Kompilierungszeit
Die Frage zu einem anderen in Beziehung steht ich vor ein paar Tagen geschrieben (link), aber für hana
umformuliert. Ich habe Schwierigkeiten, einen Algorithmus zu finden, der die Unveränderlichkeit des Objekts berücksichtigt. Ich kann nicht erkennen, welche Kombination von hana
Algorithmen mir erlauben wird, einen rekursiven Aufruf zu generieren und die zurückgegebenen Tupel gleichzeitig zu sammeln.
Benötigen Sie die Koordinaten selbst, um zur Kompilierzeit verfügbar zu sein (um z. B. eine Vorlage mit ihnen zu instanziieren)? Was versuchst du zu erreichen? Wenn Sie nur versuchen, eine Schleife zu optimieren, tun Sie es nicht. Verwenden Sie ein 'std :: array' mit normalen Loops und der Optimizer wird seine Aufgabe erfüllen. Andernfalls verwenden Sie 'hana :: cartesian_product'. –
Ich brauche die Koordinaten zur Kompilierzeit, um eine Vorlage zu instanziieren. Aber die Vorlage wird nur benötigt, weil ich getan habe, was Sie erraten haben - manuelle Entrollen einer verschachtelten Schleife. Zuerst habe ich meinen Algorithmus mit 'std :: array' implementiert. Ich war mir jedoch nicht sicher, wie sehr ich dem Compiler vertrauen sollte. Aus diesem Grund habe ich versucht, eine andere Version mittels Meta-Programmierung zu implementieren und zu überprüfen, ob es einen signifikanten Leistungsvorteil gibt. –