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.