【发布时间】:2014-05-16 01:54:18
【问题描述】:
我需要处理最多 1 亿行和 30 列的数据表 (2D)。表格元素仅包含 0、1 和破折号 (-)。该表以文本文件的形式提供给我。我必须将这些数据存储到一些数据结构中并执行诸如排序表、删除行、比较元素(在不同的行和列中)等操作。
目前我正在为此使用 2D 矢量。我尝试使用整数向量和位向量。两者都适用于 1000 万行和 25 列,但都不适用于上述最大限制(我的分配错误)。
我假设这是因为向量需要连续的内存。什么是正确的数据结构?时间也是我的考虑因素之一,并且也需要较短的访问时间。此外,如果向量实际上是正确的数据结构,是否有更好的实现我可以用来完成这项工作?我必须坚持使用 C++,不能使用数据库和其他东西。
非常感谢!
【问题讨论】:
-
如果您可以设计一个方案将您的 tribool 打包到 2 位存储中,您将需要大约 2.25GB 的存储空间。如果你要为你的 tribool 使用一个完整的字节,你需要大约 9GB。
标签: c++ multidimensional-array vector large-data