C++ 中 boost::variant 的二维向量

Posted

技术标签:

【中文标题】C++ 中 boost::variant 的二维向量【英文标题】:2-D vector of boost::variant in C++ 【发布时间】:2014-08-28 18:31:16 【问题描述】:

我希望从具有多行和多列的数据表中存储信息。每列包含不同的类型(intdoublestd::string 等),这些类型只有在运行时才能知道。

boost::variant 的二维 vector 是最好的方法,还是有更好的存储机制来实现这一点?

【问题讨论】:

一个你想要存储的例子会很有帮助。如果您的意思是存储单行、多列,每列具有不同的数据类型,boost::tuple 可能是更好的选择。 【参考方案1】:

根据您的问题,尚不清楚您实际在寻找什么。答案取决于多种因素:

假设每列有不同的类型,那么类型是否相同 所有行?

这些类型是在编译时已知还是仅在运行时已知?

在最简单的情况下,类型在编译时已知并且所有行都相同,为什么不简单地使用自定义类来表示列或std::tuple

如果不同列之间的类型不同,则必须使用全能类型,例如boost::any。 如果仅在运行时知道类型,这也可能是最简单的解决方案。

【讨论】:

以上是关于C++ 中 boost::variant 的二维向量的主要内容,如果未能解决你的问题,请参考以下文章

C++ Boost 变体错误

使用 boost::mpl 获取 boost::variant 的类型索引

强大的 boost::variant 序列化

将由 boost::variant 聚合的类型的对象传递给接受该 boost::variant 的函数

boost::variant 单一存储保证

如何返回由 boost::variant 返回类型中包含的类型的子集组成的 boost::variant