Für eine meiner Anwendungen muss ich Vektor der Größe 2^35 generieren (die Größe meines RAM ist 96 GB, so kann dieser Vektor leicht in RAM passen).Speichern vieler Elemente in std :: vector C++
int main()
{
int i;
/* initialize random seed: */
srand (time(NULL));
vector<int> vec;
do {
i = rand() % 10 + 1;
vec.push_back(i);
} while ((vec.size()*sizeof(int))<pow(2,35));
return 0;
}
Allerdings merke ich, dass meine Do While-Schleife unendlich ausgeführt wird. Einer der möglichen Gründe ist der Bereich vec.size()
ist lang unsigned int, was sehr viel kleiner ist als die Anzahl der eingefügten Elemente, d. H. pow(2,35)
, aufgrund derer ich denke, dass es in einer Endlosschleife geht. Ich kann mich irren. Bitte korrigieren Sie mich, wenn ich falsch liege. Kann mir aber bitte jemand sagen wie ich mehr als pow(2,35)
Nummern in vec einfügen kann.
gcc Version: 4.8.2
Sind Sie sicher, dass es unendlich geht und nicht nur sehr lange dauert? Sie können diesen Vektor in kleinere aufteilen, wenn 'vec.size()' wirklich das Problem ist. –
Ist 'sizeof (size_t)' auf Ihrem Computer 4? Sonst würde ich erwarten, dass es eine Weile dauert, um ein paar Milliarden Elemente einzufügen ... – Barry
Besser Platz in diesem Fall reservieren. – Jarod42