c++ - STXXL多维 vector 使程序卡住

标签 c++ vector multidimensional-array stxxl

尝试处理巨大的数据集,我一直使用方便的STXXL库。虽然我在尝试使用/生成多维 vector 时遇到了一个小问题。

以下程序会使系统卡住一段时间,然后被杀死。命令行上没有输出:

typedef stxxl::vector<int> vector;
typedef stxxl::vector<vector> vector_2d;
typedef stxxl::vector<vector_2d> vector_3d;    

vector_3d numbers(5);

for (auto & rc : numbers){
    rc = vector_2d(5);
    for (auto & r : rc ){
        r = vector(5);
        std::generate(r.begin(), r.end(), custom_random);
    }
}
for (auto rc : numbers){
    for(auto r : rc){
        for(auto n : r){
            std::cout << n << " ";
        }
        std::cout << std::endl;
    }
    std::cout << "-----" << std::endl;
}

使用调试器单步调试程序,发现卡住发生在以下行:

vector_3d numbers(5);

我使用的是 STXXL 1.3.1 版本,并在 Linux 上使用 GCC 4.8.1 进行编译。我不确定我在这里缺少什么。将 vector 更改为 STD 版本,使其起作用。如果简化为 2D vector ,它也可以工作。

编辑: 还尝试了 STXXL 的最新稳定版本(v 1.4.0),但无济于事。出现同样的问题。

最佳答案

根据 STXXL FAQ 的“参数化 STXXL 容器”部分stxxl::vector<stxxl::vector<T> >是一个无效的构造。

STXXL 容器只能包含 POD 类型。

关于c++ - STXXL多维 vector 使程序卡住,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24085754/

相关文章:

c# - 跨度和二维数组

php - 如何在php中的数组中插入新的键值对?

php - 如何将 php 数组索引设置为数组值...?

c++ - vector 作为类成员

r - R 中的向量与数据框

c++ - 为什么这个看起来无效的代码在 g++ 6.0 上编译成功?

memory - 如何在 J2ME/BlackBerry 中深度复制向量?

c++ - vector 迭代器 < 或 !=

c++ - 即使有谓词也不会通知condition_variable唤醒

c++ - 将 std::tuple 的类型转换为 std::pair