← 模式
返回多个值
1234567891011121314151617 | #include <tuple> std::tuple<int, bool, float> foo() { return std::make_tuple(128, true, 1.5f); } int main() { std::tuple<int, bool, float> result = foo(); int value = std::get<0>(result); int obj1; bool obj2; float obj3; std::tie(obj1, obj2, obj3) = foo(); } |
此模式采用 CC0 公共领域贡献 许可。
意图
从一个函数返回多个不同类型的值。
描述
第 3-6 行的 foo
函数返回一个 std::tuple
,表示不同类型的多个值。我们使用 std::make_tuple
工具函数来创建 std::tuple
对象。
第 10 行,我们调用此函数并存储结果。然后,在第 11 行,我们使用 std::get
获取返回的第一个值。
或者,在第 16 行,我们使用 std::tie
将返回值赋给每个给定对象。如果对象不能事先构造,这可能无法实现,并且它会消除复制省略的可能性。
如果这些值紧密且逻辑相关,请考虑将它们组合成一个 struct
或 class
类型。