【发布时间】:2017-07-26 05:39:58
【问题描述】:
我目前正在用 C++ 实现一个大表的数据存储。该表需要能够为可变数量的列中的每一个存储不同的数据类型。
每列的类型和长度都是在运行时定义的。因此,我认为,一个指向向量的向量将是正确的方法。但是,我无法弄清楚如何使用可变数据类型来做到这一点。
我查看了How to get a vector of different vectors in C++,但没有动态解决方案。
我对任何其他解决方案持开放态度,我不一定需要向量,但表格应该在运行时重新调整大小。
它应该看起来像这样:
0 1 2 3 ...
- - - - -
1 a 0 1.3 ...
2 b 1 2.5 ...
3 c 0 1.5 ...
4 d 0 0.8 ...
5 e 1 1.2 ...
.. .. .. ... ...
我有些人建议使用 boost::any,但我有点不情愿(就效率而言),因为表必须从磁盘加载大数据包文件。
【问题讨论】:
-
您想在向量中使用任意类型的数据?它必须基于单元格或列是任意的?请添加您想要实现的最小伪代码示例...
-
表格在列方面必须是任意的。在每一列中,数据类型保持不变。我在最初的问题中添加了一个小图表
-
你不喜欢 boost::any “在效率方面”,与什么相比?你有没有实际测量过它比
void*s 变成一个巨大的 char[] 慢得令人无法接受? -
到目前为止我还没有测量过这个。我目前正在尝试找出我有哪些选择。如果我必须在一个整数列中汇总超过 10000 个条目,那么将它们存储为字符串并在每次我需要访问它们时强制转换它们似乎非常低效。