如何正确使用boost :: variant?

时间:2013-06-22 08:43:22

标签: c++

我打算将3D矢量与异构数据结合使用。我找到了使用boost::variantboost.any的解决方案。但是,我找不到任何简单的教程。我应该包括哪些库?有人可以给我简单的教程或例子吗?

2 个答案:

答案 0 :(得分:5)

Boost.Variant和Boost.Any有不同的用例。

Boost.Variant是关于sum类型的:你的类型代表不同类型的联合,其中一种是:

  • 要求:了解所有可能类型的列表
  • 优点:您可以查询它以了解当前哪种类型处于活动状态,并在编译时检查所有操作。

Boost.Any,另一方面,它是最好的类型擦除。它可以包含任何类型,甚至是int等内置类型。

  • 要求:了解其中的类型以对其进行任何操作
  • 优点:刚刚传递boost::any的代码可能会忽略它可以容纳的类型

答案 1 :(得分:1)

在boost网站上肯定有一个相对简单的教程/参考( boost variantboost any)。

至于你应该包括的图书馆:当然会有所提升。具体而言,您需要的标头文件是boost/variant.hppboost/any.hpp。两个库都是仅头文件库。这意味着你应该只安装boost(如果你还没有)。