【问题标题】:external memory vector外部存储器向量
【发布时间】:2011-12-03 04:43:36
【问题描述】:

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

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

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

【问题讨论】:

  • 我不知道 stxxl 是什么,但你试过这个 "stxxl::vector >" 吗?
  • 是的,但是当我插入大量数据时会产生不一致的值

标签: c++ data-structures stxxl


【解决方案1】:

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

尝试例如stxxl::vector&lt;std::vector&lt;int&gt; &gt;,或创建 stxxl::vector 周围的封闭模板类,如果你想的话 参数化std::vector的itemtype。

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

参数化 STXXL 容器

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

这就是为什么stxxl::vector&lt;std::vector&lt;T&gt; &gt;stxxl::vector&lt;stxxl::vector&lt;T&gt; &gt; 无效。如果合适,使用 std::vector&lt;stxxl::vector&lt;T&gt; &gt;,或通过以下方式模拟二维数组 做指数计算。

【讨论】:

  • 如果它被标记并且如果在你的答案中明确提及
  • 它看起来无关紧要,但是好的,我正在替换它以实现向后兼容性
  • 抱歉争吵,但它与根据标签的回答完全相关。 +1。编辑后的答案:)
  • 帖子忘记放模板参数了,我的问题是stxxl::vector的实现不能保持动态结构的一致值
  • 我的意思是,它可以编译,但在运行时我遇到了一些分段错误
猜你喜欢
  • 2012-06-20
  • 1970-01-01
  • 2012-04-20
  • 2012-02-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多