← 模式

返回多个值

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 公共领域贡献 许可。

需要 c++11 或更高版本。其他版本

意图

从一个函数返回多个不同类型的值。

描述

第 3-6 行foo 函数返回一个 std::tuple,表示不同类型的多个值。我们使用 std::make_tuple 工具函数来创建 std::tuple 对象。

第 10 行,我们调用此函数并存储结果。然后,在第 11 行,我们使用 std::get 获取返回的第一个值。

或者,在第 16 行,我们使用 std::tie 将返回值赋给每个给定对象。如果对象不能事先构造,这可能无法实现,并且它会消除复制省略的可能性。

如果这些值紧密且逻辑相关,请考虑将它们组合成一个 structclass 类型。

贡献者

  • Joseph Mansfield

最后更新

2017 年 12 月 11 日

来源

在 GitHub 上 Fork 此模式

分享