我的虚拟函数可以返回单个 T
或std::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/