在没有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的泛化。

C++11中的tuple应用:让函数返回多个值的更多相关文章

  1. C++11 中的 Defaulted 和 Deleted 函数

    http://blog.jobbole.com/103669/ C++11 中的 Defaulted 和 Deleted 函数 2016/07/21 · C/C++, 开发 · C++ 分享到:3   ...

  2. python学习笔记(九)函数返回多个值,列表生成式,循环多个变量,入参格式声明

    一.函数返回多个值 1.函数如果返回多个值的话,它会把这几个值放到一个元组里面2.函数如果返回多个值的话,也可以用多个变量来接收 def say(): num1 = num2 = num3 = ret ...

  3. C++引用形参,函数返回多个值

    之前编代码有遇到过想让一个函数返回多个值的情况,low low的我不知道有什么办法,直接使用的全局变量将函数里的值传出去. 今天看书,<C++primer>第五版中文版第189页:使用引用 ...

  4. PHP自定义函数返回多个值

    PHP自定义函数只允许用return语句返回一个值,当return执行以后,整个函数的运行就会终止. 有时要求函数返回多个值时,用return是不可以把值一个接一个地输出的. return语句可以返回 ...

  5. C# 函数返回多个值的方法

    有时候我们需要一个函数返回多个值,网上更多是用out实现,我个人很喜欢用tuple方法. tuple是一个元组,最多支持7个元素,再多需要嵌套等方法实现. 使用元组定义函数的方法如下: public ...

  6. c,c++函数返回多个值的方法

    最近遇到一个问题,需要通过一个函数返回多个值.无奈C,C++不能返回多个值.所以就想有什么方法可以解决. 网上方法比较杂乱,一般有两种替代做法: 1. 利用函数的副作用, 返回值在函数外定义, 在函数 ...

  7. Android JNI编程(三)——C语言指针的初步认识、指针变量、互换两个数、函数返回多个值

    版权声明:本文出自阿钟的博客,转载请注明出处:http://blog.csdn.net/a_zhon/. 目录(?)[+] 一.什么是指针? 简单来说: 指针就是内存地址      内存地址就是指针. ...

  8. C++ 利用指针和数组以及指针和结构体实现一个函数返回多个值

    C++ 利用指针和数组实现一个函数返回多个值demo1 #include <iostream> using namespace std; int* test(int,int,int); i ...

  9. python中函数返回多个值

    用ipython运行情况如下: # 新建一个函数 In [1]: def nums(): ...: a = 11 ...: b = 22 ...: c = 33 ...: return [a,b,c] ...

随机推荐

  1. vscode新版1.31.1使用代码检查工具ESlint支持VUE

    1.VSCODE中安装ESlint省略 2.菜单文件->首选项->设置->扩展->ESLint 打钩:Eslint:Auto Fix On Save 点击此链接:在settin ...

  2. Linux下编写 makefile 详细教程

    原文地址: https://www.cnblogs.com/mfryf/p/3305778.html 近期在学习Linux下的C编程,买了一本叫<Linux环境下的C编程指南>读到make ...

  3. 华为OJ机试题目:两个大整数相乘(纯C语言实现两个大整数相乘,两种方法实现大数相乘)

    题目描述: 输出两个不超过100位的大整数的乘积. 输入: 输入两个大整数,如1234567 123 输出: 输出乘积,如:151851741 样例输入: 1234567 123 样例输出: 1518 ...

  4. ror笔记2

    在rails app的 config 文件夹中新建unicorn.rb内容如下 worker_processes 2 working_directory "/home/mage/boleht ...

  5. WPF DataGrid 控件的运用

    WPF DataGrid 控件的运用 运行环境:Window7 64bit,.NetFramework4.61,C# 6.0: 编者:乌龙哈里 2017-02-23 参考: King Cobra 博客 ...

  6. C++Primer笔记-----day03

    ==============================================================day03================================= ...

  7. 在Core环境下用WebRequest连接上远程的web Api 实现数据的简单CRUD(附Git地址)

    本文所有的东西都是在dot Net Core 1.1环境+VS2017保证测试通过. 本文接着上次文章接着写的,不了解上篇文章的可能看着有点吃力.我尽量让大家都能看懂.这是上篇文章的连接http:// ...

  8. hibernate 错误 could not determine type for

    今天配置实体类注解时,出现以下错误: org.hibernate.MappingException: Could not determine type for: com.oneToOne.IdCard ...

  9. 关于springboot中文件上传,properties配置

    spring.http.multipart.enabled=true #默认支持文件上传. spring.http.multipart.file-size-threshold=0 #支持文件写入磁盘. ...

  10. Apache Spark介绍及集群搭建

    简介 Spark是一个针对于大规模数据处理的统一分析引擎.其处理速度比MapReduce快很多.其特征有: 1.速度快 spark比mapreduce在内存中快100x,比mapreduce在磁盘中快 ...