岚天逸见

C++11中的tuple应用:让函数返回多个值

在没有tuple之前,如果函数需要返回多个值,则必须定义一个结构体,有了C++11,可以基于tuple直接做了,下面是个示例:

// 编译:g++ -std=c++11 -g -o x x.cpp
#include <tuple> // tuple头文件
#include <stdio.h>
#include <string>
using namespace std;

// 函数foo返回tuple类型
tuple<int, string> foo();

int main()
{
    // 两个不同类型的返回值a和b
    int a;
    string b;

    // 注意tie的应用
    tie(a, b) = foo();
    printf("%d => %s\n", a, b.c_str());

    // 注意tuple是一个可以容纳不同类型元素的容器
    // ,在C++11中,下面的x一般使用auto定义,这样简洁些。
    tuple<int, string, char, float> x = make_tuple(2014, "tupule", 'x', 5.30);
    printf("%d, %s, %c, %.2f\n", get<0>(x), get<1>(x).c_str(), get<2>(x), get<3>(x));
    
    return 0;
}

tuple<int, string> foo()
{
    // 用make_tuple来构造一个tuple
    return make_tuple(2014, "tuple");
}

从上述的代码,可以看出tuple是对pair的泛化。

posted on   岚天逸见  阅读(2565)  评论(0编辑  收藏  举报

编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义

导航

统计信息

点击右上角即可分享
微信分享提示