2

我得到了不断增加大小的二维向量(因为它包含所有排列模式)但是当我形成 11 个变量排列时,我的程序将崩溃,因为向量变得太大并且我的 ram 无法维持它,我应该如何解决它?我试图将格式输出为文本,但是文本文件变得太大,只有几 GB 并继续增长,这花费了太长时间。

我的笔记本电脑,i7 4700MQ,8GB 内存,Windows 8.1 Pro x64

下面是我用来形成二维向量的代码。

while (next_permutation(route.begin() + 1, route.end())) { 
        //check for every route permutation
        //first store route pattern x inside 1st vector,then will store the next route pattern in another row.
            for (counter = 0; counter < route.size(); counter++) {
                routePattern.push_back(route[counter]);
            }
            routeFormation.push_back(routePattern);
            routePattern.clear();

        }
4

1 回答 1

1

实际上,对大部分数据使用 dequeue 更好,因为 dequeue 将数据分配为块而不是一大块(向量保证可以像 c 数组一样访问所有数据)

归档可用于减少所需的内存,归档数据既可以存储在内存中,也可以存储到磁盘中。有很多 c/c++ 的归档库,例如

http://nih.at/libzip/

于 2015-09-10T07:26:50.260 回答