【问题标题】:Scalable stl set like container for C++可扩展的 stl 集类似于 C++ 的容器
【发布时间】:2011-02-27 08:40:21
【问题描述】:

我需要存储大量整数。可以有 在整数输入流中重复,我只需要 在它们之间存储不同的。 我最初使用的是 stl set 但它在 OutOfMem 时 输入的整数数太高。 我正在寻找一些 C++ 容器库 允许我存储符合上述要求的号码 由文件支持,即容器不应尝试将所有数字保留在内存中。 我不需要持久存储这些数据,我只需要找到 其中的独特价值。

【问题讨论】:

  • 整数值范围是多少?
  • 我不好意思将其称为答案,但也许您可以为 64 位重新构建您的应用程序并在 64 位系统上运行它。
  • 问题是主内存不足以容纳所有数字,我们需要像容器一样的外部内存支持集。

标签: c++ containers on-disk


【解决方案1】:

您至少应该认真地尝试一个数据库,然后才能断定它太慢了。您所需要的只是轻量级键值存储之一。过去我使用过 Berkeley DB,但这里是 list of other ones

【讨论】:

    【解决方案2】:

    您是否考虑过使用 DB(可能是 SQLite)?还是太慢了?

    【讨论】:

    • 我猜那太慢了。
    【解决方案3】:

    看看STXXL;可能是你正在寻找的。

    编辑:我自己没有使用它,但是从文档中 - 您可以使用 stream::runs_creator 来创建数据的排序运行(无论多少适合内存),然后使用 stream::runs_merger 来合并排序的流,以及最后使用stream::unique 过滤唯一性。

    【讨论】:

    • 我刚看了stlxxl。乍一看,它似乎没有 stl::set 之类的东西。
    【解决方案4】:

    由于您需要的内存大于允许的内存,您可以查看memcached

    【讨论】:

    • 内存缓存?你能解释一下如何使用它吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-12
    • 2015-09-20
    • 2013-02-06
    • 1970-01-01
    相关资源
    最近更新 更多