Zweidimensionaler Vector oder andere Lösung?
-
Hallo ich habe ein kleines Designproblem. Veranschauliche es am besten mal optisch.
0 Objekt_1 Objekt_2 Objekt_3 1 Objekt_4 Objekt_5 Objekt_6Mein Problem ich haben ein zweiten Vektor welcher Objekte vom Typ Termin beinhaltet. Der andere(den ich oben veranschaulicht habe) soll Materialien zum Terminvektor beinhalten. An der Stelle 0 im Terminvektor befindet sich der erste Termin, dazu sollen dann die Materialien zugeordnet werden welche sich im zweidimensionalen Vektor befinden.
So das ist mein Problem. Wie könnte ich dies jetzt am besten lösen?

-
So ganz klar ist mir das noch nicht geworden. Willst du zu einem Termin jeweils einen Materialvektor haben?
Wenn das der fall ist pack doch diesen Vektor mit in die Terminklasse.
-
Es gibt verschiedene Termine, jeder Termin hat ein Material oder mehrere Materialien. Die Klassen Termin und Material sind bereits implementiert und die Trennung ist, denke ich, logisch auch sinnvoll.
Jetzt geht es darum die beiden Sachen zusammenzuführen und auszugeben, da es aber auch die Möglichkeit zur Bearbeitung gibt, sollen sie als Klassenvariablen (in der Klasse welche für die Ausgabe verantwortlich ist) geführt werden.
Dachte mir das halt so das die Termine in einem eigenen Vektor ganz gut aufgehoben sind. Nun muss ich aber den Terminen die Materialien zuweisen. Also zB an Feldposoion 0 im Vektor Termin steht der erste Termin nun wollte ich auf den zweiten Vektor zugreifen welcher in der ersten Dimension die Position 0 hat, und somit die Parallele zum Terminvektor ist. In der zweiten Dimension sollen dann alle Materialien stehen, von 0 bis n.
Weiß nicht ob das so überhaupt umsetzbar ist?
-
std::pair<Termin, std::vector<Material>>so vielleicht?
-
Hallo
Bei solchen doppelt Templates darf man das Leerzeichen in dem abschließenden > > nicht vergessen sonst mißinterpretiert der Compiler das als >> Operator
std::pair<Termin, std::vector<Material> >Zum Thema : Ich würde ein vector für die Termine machen
std::vector<Termin>und der Termin-Klasse noch einen Vektor für die zugehörigen Materialien als Member geben
class Termin { ... std::vector<Material> };Nur so läßt sich die Datenkapselung sicherstellen, d.h. das von außen nicht die Zuordnung von der Materialien zu den Terminen geändert werden kann ohne das der Termin das mitbekommt.
bis bald
akari
-
stimmt, ändert sich zum Glück ja bald und einige Compiler können es jetzt schon

-
Hallo,
mit "pair" klingt sehr interessant, werde ich auf jeden Fall ausprobieren.
Jetzt habe ich dazu dann noch ein Grundlagenproblem. Ich kenne bis jetzt nur bei Vektoren die bequeme Art der Verarbeitung wenn sie einen Namen haben, zB vektorname.push_back(8);. Dies ist ja nun nicht mehr gegeben, wie kann ich nun einen Vektor füllen oder dann auf die Daten im Vektor zugreifen?