(无序)设置容器,其长度超过C ++中的size_t

时间:2016-08-06 16:54:54

标签: c++ size unordered-set

所以我有一个不断增加的对象序列(我可以幸运地将每个对象转换为可能超过32位的唯一数字)。因此,在不失一般性的情况下,让我们假设我有一系列 int_64 。如果您的序列长度超过 size_t ,并且您需要使用它,就好像使用(无序)集合(即执行搜索并避免重复但是排序不是这样),您会怎么做?一个大问题。以前我使用 boost :: unordered_set 但是这个max_size是 size_t ..是否可以有一个容器(甚至可以扩展 boost :: unodered_set < / em>)这样它可以容纳多个 size_t 元素?如果序列太大,如果我将序列保存在文件中并在文件中搜索会更有效吗?

1 个答案:

答案 0 :(得分:0)

容器限制是一个红色的鲱鱼:你的系统将首先运行oitnof地址空间。

如果你想要一个库,stxxl有磁盘支持的容器。或者只使用sql或其他类型的数据库。

如果必须,我无法实现自己的数据库或stxxl,我会向下缩小到更小的尺寸(比如24位)并直接在那里保持N个元素。当您需要知道大小或内存元素已满时,您可以在磁盘上读取该24位散列表。

也许连锁期货可以计算完整的大小,允许异步磁盘访问来更新值和2 ^ 24个节点。