2

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

4

1 回答 1

5

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

您是否经常需要区分(代码路径明智)仅T返回一个的情况和多值情况?或者for(auto t : create_T_orTs()) { ... }在任何一种情况下,一个简单的事情都可以做正确的事情吗?

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

于 2013-07-08T12:53:38.907 回答