Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

06.03.2013, 23:20

2 dimensionales Array mit Vector-Klasse aus der STL

Hallo Forum,

ich habe ein rechte kurz Frage, aber leider finde ich nach Suche in Google immer noch keine Antwort. Es handelt sich um die Deklaration eines 2dimensionalen Arrays in einer Klasse.
nehmen wir einfach mal an, die Klasse sieht so aus:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
class A
{
  private:
          vector<vector<int> MyVec> My2DVec;
 public:
        A():My2DVec(6){}
};
   


Aber wie kriege ich auch den Vector MyVec in dem Beispiel initialisiert?
Könnte ich zum Beispiel im Konstruktor einfach MyVec (10) noch dahinter schreiben?
Oder hätte ich zum Beispiel folgendes machen können?

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
class A
class A
{
  private:
         vector<int> MyVec;
          vector< MyVec> My2DVec;
 public:
        A():MyVec(10),My2DVec(6){}
   


Danke im Voraus schonmal für Antworten :)

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

2

06.03.2013, 23:31

Verschachtelte std::vector sind keine gute Lösung für mehrdimensionale Arrays. Mehr dazu hier: Multidimensionale Arrays in C++

Kurzfassung: Schreib dir eine Klasse, die intern einen einfachen std::vector verwendet und zweidimensionale Indices auf diesen eindimensionalen vector abbildet.

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

3

07.03.2013, 01:33

Falls es sich um ein "rechteckiges" 2D array handelt lässt es sich sehr einfach durch folgende Berechnung indizieren:
index_1D = x + width * y

Falls man aus einem 1D index wieder x und y gewinnen möchte hilft das hier weiter:
x = index_1D % width
y = index_1D / width

Warum das so funktioniert? Zettel&Stift&Zahlenbeispiele ;)
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

Werbeanzeige