Wird verwendet wenn anschliessend mit vd.push_back(..) oder copy gefüllt wird.
Optional kann auch nachträglich die Grösse gesetzt werden, z.B. vd.resize(100)
Dann Zugriff mit z.B. vd[17] ok.
Damit kann man z.B. einen 2-dim Arrray oder Matrix emulieren
vector< vector< double > > vvd(4,6);
legt eine
Matrix mit 4 Zeilen und 6 Spalten an. Zugriff auf die Elemente
geht mit z.B.
vvd[3][2]
Insbesondere bei verschachtelten Vektoren:
vector< vector< int > > vvi(10);
Legt nur den
äusseren Vektor an, d.h.
vvi[4] existiert, ist aber leerer Vektor vom Typ int.
Am besten immer size() oder begin() bzw. end() mittesten:
for( auto p=vec1.begin(); (p !=vec1.begin()+30) && (p !=vec1.end()); p++) { cout << *p; } for(int i=0; (i<30)&&(i<vec1.size()); i++) { cout << vec1[i]; }
Bei Benutzung der modernen for-loop Achtung beim Füllen:
... vector<int> vi(10); // int vec with 10 elements intialized to 0 int i=0; for ( auto x : vi ) { // try to fill elements i++; x = i; } for ( auto x : vi ) { cout << x << endl; // elements still 0 } i=0; for ( auto &x : vi ) { // x as ref i++; x = i; } for ( auto x : vi ) { cout << x << endl; // now elements set }