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::vector ist 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.


  • Mod

    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önnte std::vector<> unbekannt sein, weil Du <vector> nicht inkludierst, dann koennte vector unbekannt sein, weil der Compiler nicht den namespace std durchsucht und zuguterletzt könnte der Compiler vector als das std::vector identifizieren 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.


Anmelden zum Antworten