Vectoren



  • Hallo,

    Ich habe hier ein Problem,ich möchte 200 Vectoren mit je 10000
    Feldern mit der grösse double erstellen.

    Ich habe jetzt uberhaupt keinen Plan.

    Ein Vector mit 10000 werten,richtig ?
    vector<double> dvec(10000);

    Aber wie mach ich da 200 von.
    Und wie spreche ich die einzeln an.



  • so evtl.

    #include <vector>
    #include <algorithm>
    using namespace std;
    
    int main()
    {
    	typedef vector<vector<double> > dvec;
    	dvec v(200);
    
    	for (dvec::iterator it=v.begin(); it!=v.end(); ++it)
    		it->resize(10000);
    
    	v[100][1000]=12.77;
    //irgendwas anderes mit v machen
    
    	return 0;
    }
    


  • vector< vector<double> >  vec( 200 , vector<double>(10000) ); 
    
    vec[0][10] = 3.14;
    


  • ok ist vlt. doch besser wenn man die konstruktoren richtig kennt...



  • Danke erstmal für die Antworten.

    @Cpt. Tanga
    Ist dein Beispiel richtig ?

    @evilissimo
    vector< vector<double> > vec( 200 , vector<double>(10000) );
    Was bewirkt > dieses Zeichen in der Mitte der Anweisung ?



  • ja ist es vermutlich -auch wenn algorithm ueberfluessig ist 😑 und ohnehin die version mit dem konstruktor zu bevorzugen ist.
    welches zeichen in der mitte?
    vector< vector<double> >...
    sagt das der typ ein vector von einem vector von double ist.
    dahinter kommt der name 'vec' und dann die konstruktor parameterliste
    der erste parameter gibt die anzahl der elemente des ersten vectors an und der 2 den initialwert fuer dessen elemente welcher in diesem fall ein konstruktor eines vector<double> mit 10000 elementen ist.



  • NurGast schrieb:

    Danke erstmal für die Antworten.
    @evilissimo
    vector< vector<double> > vec( 200 , vector<double>(10000) );
    Was bewirkt > dieses Zeichen in der Mitte der Anweisung ?

    Das ist das ende vom ersten < des templates 😉

    stell dir das folgendermaßen vor:

    typedef vector<double> double_vec;
    vector< double_vec > vec( 200 , double_vec( 10000 ) );
    

    Ist vielleicht leichter zu verstehen/lesen 😉

    BR
    evilissimo



  • vector< vector<double> > vec( 200 , vector<double>(10000) );
    Ich meinte diese Zeichen ">" aber sehe gerade das es zum Vector gehört.



  • Was dich verwirrt, ist wohl das Leerzeichen davor (es suggeriert nähmlich, dass das > eine eigenständige Anweisung währe). Würde das Leerzeichen fehlen, würde der Compiler das ">>" aber als Shift-Operator interpretieren, deshalb muss das Whitespace da sein.


Anmelden zum Antworten