相关疑难解决方法(0)

在C++中创建稀疏数组的最佳方法是什么?

我正在研究一个需要操纵巨大矩阵的项目,特别是用于copula计算的金字塔总和.

简而言之,我需要在矩阵(多维数组)中的零海中跟踪相对较少数量的值(通常值为1,在极少数情况下大于1).

稀疏数组允许用户存储少量值,并假设所有未定义的记录都是预设值.由于实际上不可能将所有值存储在内存中,因此我只需要存储少数非零元素.这可能是数百万条目.

速度是一个重中之重,我还想在运行时动态选择类中的变量数.

我目前正在使用二进制搜索树(b-tree)来存储条目的系统.有谁知道更好的系统?

c++ oop hash maps data-structures

50
推荐指数
5
解决办法
4万
查看次数

g ++与大std :: array冻结

我写了一个非常小的程序:

#include <array>
#include <tuple>
#include <iostream>

const unsigned int NUM = 500;

void simple()
{
    using namespace std;
    array<tuple<float, float, float>, NUM> vectors;
}

int main(int argc, char **argv) 
{
    std::cout << "Hello, world!" << std::endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我编译了它g++ -std=c++0x.

这个版本工作正常,如果我增加到NUM50,000,000,g ++使用90%的CPU,我的系统完全冻结.

我知道如果没有足够的堆栈内存,程序可能会在执行期间崩溃.但是为什么编译器会在编译期间冻结?

这是g ++中的错误还是由于某种原因编译器需要在编译期间分配堆栈内存?

c++ g++ std freeze c++11

12
推荐指数
0
解决办法
352
查看次数

标签 统计

c++ ×2

c++11 ×1

data-structures ×1

freeze ×1

g++ ×1

hash ×1

maps ×1

oop ×1

std ×1