Я пытаюсь зарезервировать место для вектора векторов, но он не работает и выдает следующее сообщение об ошибке:Выделение памяти для вектора векторов
terminate called after throwing an instance of 'std::bad_alloc'
what(): std::bad_alloc
Каждый раз, когда я использую достаточно большое количество , Минимальная версия, что я ниже:
#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;
}
Он должен работать на больших structSizes, но терпит неудачу на базе = 3, размер = 4, длина = 6, что делает structSize = 324,540,216. Возможно ли, чтобы это работало?
Да, возможно - добавьте больше памяти на ваш компьютер. – Slava
Сделал ли вы математику, сколько памяти потребуется? –
Вы действительно хотите сохранить каждый результат? Вы не можете просто перебрать результат? – Jarod42