尝试处理庞大的数据集时,我一直在使用方便的STXXL库。尽管在尝试使用/生成多维向量时遇到了一个小问题。
以下程序将系统冻结一段时间,然后被杀死。命令行没有输出:
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);
我正在使用 1.3.1 版的 STXXL,并在 Linux 上使用 GCC 4.8.1 对其进行编译。我不确定我在这里缺少什么。将向量更改为 STD 版本,使其工作。如果简化为 2D 矢量,它也可以工作。
编辑:还尝试了 STXXL 的最新稳定版本(v 1.4.0),但无济于事。出现同样的问题。