小编viz*_*tek的帖子

当元素数> 1000时,如何使向量的笛卡尔积?

我有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)

c++ cartesian-product bad-alloc c++11

5
推荐指数
1
解决办法
274
查看次数

标签 统计

bad-alloc ×1

c++ ×1

c++11 ×1

cartesian-product ×1