Ich bin für einen Vektor von Vektoren Reserveraum versucht, aber es funktioniert nicht und führt den folgenden Fehler:Allokierung von Speicher für einen Vektor von Vektoren
terminate called after throwing an instance of 'std::bad_alloc'
what(): std::bad_alloc
Jedes Mal, wenn ich eine ausreichend große Zahl verwenden . Eine minimale Version von dem, was ich habe, ist unten:
#include <vector>
#include <iostream>
using namespace std;
int main(){
int base;
cout << "Enter Base: ";
cin >> base;
int dimension;
cout << "Enter Dimension: ";
cin >> dimension;
int perms = 1;
for(int i=0; i<dimension; i++){
perms *= base;
} // This gets the number of permutations with repetition
int length;
cout << "Enter Length: ";
cin >> length;
float structSize = 1.0;
for(float i=0.0; i<length; i++){
structSize *= perms-i;
structSize /= (i+1.0);
} // This gets the number of combinations
vector< vector< vector<double> > > allStructs;
allStructs.reserve(structSize);
return 0;
}
Es sollte für große structSizes arbeiten, aber nicht an der Basis = 3, Maß = 4, Länge = 6, die structSize = 324.540.216 macht. Kann das funktionieren?
Ja, es ist möglich - fügen Sie mehr Speicher zu Ihrem PC hinzu – Slava
Haben Sie die Berechnung durchgeführt, wie viel Speicher das erfordern würde? –
Speichern Sie wirklich jedes Ergebnis? Können Sie nicht einfach über das Ergebnis iterieren? – Jarod42