外部记忆向量

时间:2011-12-03 04:43:37

标签: c++ data-structures stxxl

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

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

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

1 个答案:

答案 0 :(得分: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> >,或模拟二维数组   做指数计算。