c++ - 我应该使用 boost::variant 吗?

标签 c++ boost boost-variant

我的虚拟函数可以返回单个 Tstd::vector<T> 。返回boost::variant<T, std::vector<T>>是个好主意吗?在这种情况下,或者最好总是返回 std::vector<T> ?哪个看起来更好并且性能开销最少?返回单个值时使用变体是否更快?

最佳答案

撇开性能问题不谈,这取决于函数的语义,或更准确地说取决于返回值。

您是否经常需要区分(代码路径方面)只有一个 T 的情况?返回多值情况?或者可以简单的for(auto t : create_T_orTs()) { ... }在这两种情况下都做正确的事吗?

我的直觉是前者的可能性小于后者,因为 variant<>带有语法“价格”,我会选择 KISS 并使用 std::vector<T> ,除非有强有力的语义理由来区分单值情况和多值情况。

关于c++ - 我应该使用 boost::variant 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17525121/

相关文章:

c++ - 是大括号可构造的类型特征

c++ - 为什么 boost::recursive_wrapper 在这种情况下不起作用

c++ - 线程安全队列有问题吗?

c++ - 从文件读取时无法使用 getline

c++ - 如何将卡方分布与 C++ Boost 库一起使用?

c++ - 在学习 BOOST 替代品之前,我应该精通 STL 库吗?

c++ - _BLOCK_TYPE_IS_VALID(pHEAD->nBlockUse) 错误

c++ - 如何使我的 C++ 代码与 QT 按钮一起工作并打印到 QlineEdit?

c++ - boost::asio,线程和同步

c++ - map 中具有指针类型的 Const Boost 变体