Fehler in einem vector
-
Ich wollte einen Vector mit 100 random Elementen füllen und sie anschließend ausgeben lassen. Hat aber nicht geklappt.
#include <iostream> #include <vector> #include <windows.h> #include <time.h> using namespace std; int main() { srand(time(NULL)); std::vector<int> v; int i; for (i=0; i<100; ++i) { v.push_back(rand()%100); // Fügt i ans Ende von v an. ++v[i]; // v[i] muss bereits existieren } for(unsigned int h = 0; h < v.capacity(); ++h) { cout << v[h]; } Sleep(10000); }
Fehler:
Debug Assertion Failed
Expression: vector subscript out of range
-
http://www.cplusplus.com/reference/stl/vector/capacity/
capacity != size!
Und das++v[i]
macht was anderes als du denkst.
Du kannst btw. den Vector gleich nach Erstellen auf eine capacity von 100 setzen (vector::reserve()).
-
l'abra d'or schrieb:
http://www.cplusplus.com/reference/stl/vector/capacity/
capacity != size!
Und das++v[i]
macht was anderes als du denkst.
Du kannst btw. den Vector gleich nach Erstellen auf eine capacity von 100 setzen (vector::reserve()).Danke, klappt jetzt.
Was macht das ++v[i] denn?
-
Den Wert erhöhen.
-
skullyan schrieb:
v.push_back(rand()%100); // Fügt i ans Ende von v an. ++v[i]; // v[i] muss bereits existieren
Warum nicht gleich so:
v.push_back(rand()%100 + 1);
?
-
krümelkacker schrieb:
skullyan schrieb:
v.push_back(rand()%100); // Fügt i ans Ende von v an. ++v[i]; // v[i] muss bereits existieren
Warum nicht gleich so:
v.push_back(rand()%100 + 1);
?
Stimmt, ist einfacher.