我有1,2,...,n个向量。每个向量都有超过10000个元素,我必须获得这些向量的笛卡尔积。我有一个代码,起作用了,但是仅在1000个元素和4个向量以下。我想将笛卡尔乘积写到文件中,但是如果输出文件大于1GB,则会得到:“在抛出'std :: bad_alloc'what()实例what():std :: bad_alloc实例后调用终止”。
我的主要问题是,如何解决此内存分配错误?
这是我的代码的可运行部分:
#include <iostream>
#include <vector>
#include <algorithm>
#include <time.h>
#include <fstream>
#include <math.h>
using namespace std;
vector<double> makeVectorByRange(double min, double max, double step){
vector<double> out = {};
for( ; min <= max; min+=step){
out.push_back(min);
}
return out;
}
void cart_product_solve_and_write_to_file (const vector<vector<double>>& inpV) {
vector<vector<double>> out = {{}};
std::ofstream outputFile;
std::fixed;
for (auto& u : inpV) {
vector<vector<double>> r;
r.clear();
for (auto& x : out) {
//make/open file, append
outputFile.open ("out.csv", std::ofstream::out | std::ofstream::app); …Run Code Online (Sandbox Code Playgroud)