如何正确使用boost::变体

How to use boost::variant correctly?

本文关键字:变体 boost 何正确      更新时间:2023-10-16

我打算将3D矢量用于异构数据。我找到了使用boost::variantboost.any的解决方案。然而,我找不到任何简单的教程。我应该包括哪些图书馆?有人能给我简单的教程或例子吗?

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

Boost.Variant是关于和类型的:你的类型代表不同类型的并集,多种类型中的一种:

  • 要求:了解所有可能类型的列表
  • 优点:您可以查询它来了解当前哪个类型是活动的,并且在编译时检查所有操作

另一方面,任何类型的擦除都是最好的类型擦除。它可以容纳任何类型,甚至可以容纳像int这样的内置类型。

  • 需要:知道内部的类型才能对其执行任何操作
  • 优点:只传递boost::any的代码可以忽略它可能包含的类型

boost网站上肯定有一个相对简单的教程/参考资料(boost变体和boost任意)。

至于你应该包括的库:那当然是一个提升。具体来说,您需要的头文件是boost/variant.hppboost/any.hpp。这两个库都是仅表头的库。这意味着您应该只安装boost(如果您还没有安装的话)。