dani93 hat geschrieben: Muss da jedes Mal
stehen?
Hat Xin schon beantworet, ich wäre aber eher für die typedef- Variante.
dani93 hat geschrieben:Liegt bei einem Vektor der gesamte Speicherbereich in einer Reihe? Kann ich ohne Probleme an fread/fwrite mit einer Anzahl von Länge*Breite übergeben
Zwar liegen die Elemente höchstwahrscheinlich in einer Reihe - du hast aber keine Garantie dafür. Tatsache ist, du hast nichtmal die Möglichkeit einen richtigen "Zeiger" im klassischen Sinne auf deine Elemente zu bekommen.
Was du bekommen kannst ist ein "Iterator".
Was ist dieser komische Iterator?
Das möchte ich versuchen Anhand eines Zeigers zu erklären: Ein Zeiger auf ein Array hat zwei Funktionen:
erstens: er zeigt auf das Objekt, also wo im Speicher das Array liegt
zweitens: er kann verwendet werden, um auf das Array zuzugreifen, also "durchzuiterieren".
Spaltet man nun die beiden Funktionen eines Zeigers auf verschieden Dinge auf, hast du erstens - den speicherteil (ich vergleiche das in meinem Kopf mit einer Java- Referenz) und zweitens einen Zugriffsteil, den Iterator.
Die Container der STL handhaben den Speicher nämlich intern, die Iterator sind nur für den Zugriff da.
Für den Dateizugriff würde ich dir in C++ sowieso was anderes empfehlen, und zwar die Iostream Klassen. Etwas in die Jahre gekommen, funktionieren aber immer noch. Um deinen zweidimensionalen Vektor einzulesen bzw. zu schreiben müsstest du nur den Vektor mithilfe der Iteratoren richtig schreiben bzw. auslesen.
Dazu könntest du std::istream_iterator bzw. std::ostream_iterator in einer verschachtelten schleife verwenden.
Als alternative gibts noch was von Boost, das habe ich aber noch nie verwendet:
http://www.boost.org/doc/libs/1_38_0/li ... /user.html
Haters gonna hate, potatoes gonna potate.