我正在开发一个外部内存数据结构,我需要将数据放入一个向量结构中,该结构会自动进行交换(可能使用 LRU 策略)以保持固定的 RAM 内存。我试过 stxxl 向量结构,但问题是它不能存储动态结构,如std::vector
. 这不起作用:
stxxl::vector< std::vector<T> >
是否有任何外部存储器结构库可以处理这些元素?
我正在开发一个外部内存数据结构,我需要将数据放入一个向量结构中,该结构会自动进行交换(可能使用 LRU 策略)以保持固定的 RAM 内存。我试过 stxxl 向量结构,但问题是它不能存储动态结构,如std::vector
. 这不起作用:
stxxl::vector< std::vector<T> >
是否有任何外部存储器结构库可以处理这些元素?
模板参数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> >
或通过执行索引计算来模拟二维数组。