1

我正在开发一个外部内存数据结构,我需要将数据放入一个向量结构中,该结构会自动进行交换(可能使用 LRU 策略)以保持固定的 RAM 内存。我试过 stxxl 向量结构,但问题是它不能存储动态结构,如std::vector. 这不起作用:

stxxl::vector< std::vector<T> >

是否有任何外部存储器结构库可以处理这些元素?

4

1 回答 1

6

模板参数stxxl::vector是包含项目的类型,但std::vector不是类型,它缺少它的模板参数。

尝试例如stxxl::vector<std::vector<int> >,或者stxxl::vector如果您想参数化std::vector.

更新:经过一番研究,我在Stxxl: FAQ的第一页 http://algo2.iti.kit.edu/stxxl/trunk/FAQ.html上找到了这个

参数化 STXXL 容器

像 stxxl::vector 这样的 STXXL 容器类型只能使用 POD 的值类型进行参数化(即没有虚拟函数,没有用户定义的复制赋值/析构函数等)并且不包含对内部存储器的引用(包括指针) . 通常,“复杂”数据类型不满足此要求。

这就是为什么stxxl::vector<std::vector<T> >并且 stxxl::vector<stxxl::vector<T> >是无效的。如果合适,使用 std::vector<stxxl::vector<T> >或通过执行索引计算来模拟二维数组。

于 2011-12-03T05:10:24.920 回答