Hallo R.T.,
habe gerade den korrekten Beitrag von Wortfuchs gelesen,
das ist aber möglicherweise etwas zu wenig erklärt. Daher
mein Senf zusätzlich …
Ich möchte eine Datei mit verschiedenen Koordinaten (die zu
Blocks zusammengefasst sind) einlesen, verarbeiten und wieder
in eine Datei speichern. Soweit so gut.
In PHP hätte ich nun die Datei in ein mehrdimensionales
dynamisches Array eingelesen und verarbeitet. Aber in C++ hab
ich keine Ahnung wie man dynamische mehrdimensionale Arrays
erstellt, deshalb hab ich sie bis jetzt erstmal statisch
vordefiniert, was natürlich recht viel Speicher frisst und
etwas umständlich im Umgang ist (neu compilieren, wenn sich
die Datei ändert)
Ein 2D-Array hat 2 Dimensionen, Du sprichst aber von
„Koordinaten“, also nehme ich an, dass die 2.Dimension
konstant ist (wieviele „Spalten“ hat ein Datensatz).
Du willst also einen 1-dimensionalen Vektor von
Daten des Typs [x,y,z,a] (oder sowas) haben.
Dann ist das „straightforward“.
-
Den Typ einer Koordinate definieren:
class COORD {
public:
double x, y, z;
};
oder einen K-block direkt definieren:
typedef double COORD[3]; // ist jetzt double[3]
-
einen Vektor davon bauen, z.B. mit der
Standardbibliothek.
#include ;
using namespace std;
…
vector koordinaten;
-
der (schnelle) Zugriff auf die Vektorelemente, die schon
da sind (nach dem Einlesen) ist dann
resultat = koordinaten[p].x + koordinaten[q].x;
oder
resultat = koordinaten[j][i] + koordinaten[i][j];
-
beim Einlesen gehst Du z.B. wie folgt vor:
COORD tmpval;
tmpval.x = …, tmpval.y = …, tmpval.z = …
koordinaten[i]. push_back (tmpval);
oder
COORD tmpval;
tmpval[0] = ..., tmpval[1] = ..., tmpval[2] = ...
koordinaten[i]. **push\_back** (tmpval);
die Funktion std::vector.push_back(…) macht
also das, was Du willst. Am Ende siehst Du
über
n = koordinaten.size()
wieviele
Koordinaten Du schon hast.
Grüße
CMБ