Einem Array nacheinander Vektoren hinzufügen
-
Hallo!
Ich möchte gerne einem Array in einer Schleife nach und nach einen Vektor hinzufügen. Gibts für solche Fälle etwas in der Standard-Bibliothek?
Da ich noch nicht weiß, was es da für Möglichkeiten gibt, ein Pseudoskript:for(i=0; i<10;i++){ Berechne den 2x1-Vektor mittels einer Funktion Füge diesen 2x1-Vektor an ein Array an }Als Ergebnis möchte ich dann eine 2x10-Matrix haben. Was gibt es dazu schlaues?
-
RobertB schrieb:
Ich möchte gerne einem Array in einer Schleife nach und nach einen Vektor hinzufügen. Gibts für solche Fälle etwas in der Standard-Bibliothek?
Es gibt
std::vector. Nicht zu verwechseln mit einem Vektor wie du ihn meinst,std::vectorist praktisch ein in der Grösse variables Array.Benutzung:
std::vector<Vektor> result; for(i=0; i<10;i++){ Berechne den 2x1-Vektor mittels einer Funktion result.push_back(2x1-Vektor); // push_back: hinten anfügen }
-
Du hast ja
std::vector<Vektor> result;geschrieben. Der Dateityp ist jetzt "Vektor". Soll ich mir da jetzt eine eigene Klasse definieren...? Oder kann ich auch
std::vector<vector> result;machen?
Ich hab grad
std::vector<vector> result;probiert, das mag er nicht.
-
Da sollst du den Typ deines mathematischen Vektors nehmen. Also den Typ, von dem dein Array wäre.
(dies erfolgt unter der Annahme, dass du deinen Vektor vorher nicht als einen double[3] oder ähnliches dargestellt hast. Der Typ muss schon kopierbar sein, also kein Arraytyp. Falls du vorher ein rohes Array hattest, dann nimm wenigstens std::array<double, 3>. Aber ein eigener Datentyp für mathematische Vektoren ist auch immer nützlich)
-
RobertB schrieb:
Du hast ja
std::vector<Vektor> result;geschrieben. Der Dateityp ist jetzt "Vektor". Soll ich mir da jetzt eine eigene Klasse definieren...? Oder kann ich auch
std::vector<vector> result;machen?
Das kannst Du halten, wie ein Dachdecker...
RobertB schrieb:
Ich hab grad
std::vector<vector> result;probiert, das mag er nicht.
Was "mag" "er" nicht?
Der Code kann mehrere Probleme haben, z.B. könntestd::vector<>unbekannt sein, weil Du<vector>nicht inkludierst, dann koenntevectorunbekannt sein, weil der Compiler nicht dennamespace stddurchsucht und zuguterletzt könnte der Compilervectorals dasstd::vectoridentifizieren und bemängeln, dass Du keine Templateparameter angibst....
-
und zu aller letzt könnte er auch kein c++11 benutzen, welches erst die lustige einschränkung des T1<T2<T3> >(igitt) aufgehoben hat.