尝试处理巨大的数据集,我一直使用方便的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/