Matrix
-
welche Implementierungstechnik ist effizienter bzw. benötigt geringere Speicherzugriffszeit, schneller usw. :
double a = new double[width][high]; double getValue(int i, int j){ return a[i][j]; } //oder double a = new double[width*high]; double getValue(int i, int j){ return a[i*width+j]; }Danke
-
Exakt identisch.
Zu empfehlen wäre die zweite Technik, aber mit einem std::vector anstatt new[].
-
Beides wird nicht kompilieren, weil double den Zeiger nicht aufnehmen kann. Prinzipiell ist die erste Technik hübscher, allerdings ist sie nur anwendbar, wenn die innere Dimension eine Compilezeitkonstante ist. Die Syntax ist dann:
double (*a)[height] = new double[width][height]; // height muss constexpr sein.Außerdem sollte man das natürlich nie nackt verwenden, sondern gleich in einen RAII-Anker stopfen.