首页 > 解决方案 > c++:用户定义类型的向量?

问题描述

我有一个要存储数​​据的向量。我希望用户能够决定存储向量的精度级别(浮点数或双精度数)。

如何根据用户输入声明向量?这显然不起作用:

std::vector<userWantsFloats ? float : double> data; ...

标签: c++classtemplatesdynamic

解决方案


选项可能是使用std::variant.

std::variant<std::vector<float>, std::vector<double>> data;

然后,您可以根据用户输入初始化变体,但任何逻辑只能通过使用编写一次std::visit

std::visit([](auto&& vec) {
  // Do your thing
}, data);

如果 C++17 不是一个选项,那么 boost 有一个变体模板,它启发了现在的标准模板。您可以改用它。请参阅有关该主题的boost 文档


推荐阅读