本文介绍在C++语言中,使用一个函数,并返回两个及以上同类型或不同类型的返回值的具体方法。

  对于C++语言而言,其不能像Python等语言一样在一个函数中返回多个返回值;但是我们也会经常遇到需要返回两个甚至更多个值的需求。针对这种情况,我们可以通过pairtuple(元组)等数据结构,实现C++函数返回两个或多个返回值的需求。本文就以pair为例,介绍二者的具体用法。

  首先,我们需要将C++函数的类型定义为pair<>,其中<>内为两个返回值各自的数据类型。例如,如以下代码所示,我们定义了一个函数raster_to_series,函数类型为pair<double**, double*>,表示这一函数的返回值有两个,且两个返回值的数据类型分别为double**double*

pair<double**, double*> raster_to_series(double** pafScanline)
{
// 这里是函数的代码部分
// ...
return make_pair(pixel_paf, miss_rate_paf);
}

  其中,在函数的返回值部分,我们需要基于make_pair()函数,将数据类型分别为double**double*的两个变量放在一起,形成pair这一结构,再进行返回。

  其次,以上pairmake_pair()等都是定义在std这一命名空间内的,因此需要首先声明一下这一命名空间;再次,在调用这一函数前,我们首先需要定义一个pair <double**, double*>类型的变量,并将函数的返回值赋给它。

using namespace std;

int main() {
pair <double**, double*> pair_paf = raster_to_series(pafScanline);
double** pixel_paf = pair_paf.first;
double* miss_rate_paf = pair_paf.second;
return 0;
}

  随后,通过.first.second命令,分别获取pair<double**, double*>中的两个变量。

  至此,我们即实现了通过一个C++函数返回两个返回值的方法。

  如果需要返回三个或更多的返回值,则可以基于tuple(元组)这一数据结构,用类似于上述操作的方法来实现。举一个例子,假如我们想通过一个函数返回三个返回值,就需要将前述代码中函数的类型定义为tuple<int, double, int>,将make_pair()函数更改为make_tuple(),且在调用函数时首先将返回值赋给一个tuple<int, double, int>类型的数据,再依次从这一元组类型的数据中提取出三个返回值的具体数值。

  至此,大功告成。

C++函数如何具有多个返回值?的更多相关文章

  1. C#多线程函数如何传参数和返回值

          详见网站:http://WWW.MOVIH.COM就是一个多线程爬虫系统.   C#多线程函数如何传参数和返回值 提起多线程,不得不提起 委托(delegates)这个概念. 我理解的委托 ...

  2. C#中的函数(二) 有参有返回值的函数

    接上一篇 C#中的函数(-) 无参无返回值的函数 http://www.cnblogs.com/fzxiaoyi/p/8502613.html 这次研究下C#中的函数(二) 有参有返回值的函数 依然写 ...

  3. JS函数 -- 功能,语法,返回值,匿名函数,自调用匿名函数,全局变量与局部变量,arguments的使用

    “JavaScript设计得最出色的就是它的函数的实现.” -- <JavaScript语言精粹> 函数包含一组语句,它们是JS的基础模块单元,用于指定对象的行为.一般来说,所谓编程,就是 ...

  4. python学习笔记10(函数一): 函数使用、调用、返回值

    一.函数的定义 在某些编程语言当中,函数声明和函数定义是区分开的(在这些编程语言当中函数声明和函数定义可以出现在不同的文件中,比如C语言),但是在Python中,函数声明和函数定义是视为一体的.在Py ...

  5. javascript函数的声明,及返回值

    <1> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>< ...

  6. python中的函数(定义、多个返回值、默认参数、参数组)

    函数定义 在python中函数的定义以及调用如下代码所示: def test(x): y = x+1 return y result = test(2) print(result) 多个返回值的情况 ...

  7. 函数的调用 and 打印返回值 ret= mai() print(ret)

    def mai(): # mai 函数名 (yan) 形式参数 print("老板,给我一包中华") return"给你" # 返回值-- 给你ret = ma ...

  8. 第4天:function对象(案例:获取当前日期属于当年第几天、arguments对象、函数类型、参数、返回值、自身调用)

    获取当前日期输入当年第几天 //输入,年月日,获取这个日期是这一年的第几天 //年-月--日:20171月31日 function getDay(year,month,day){ //定义变量存储对应 ...

  9. python基础之函数参数、嵌套、返回值、对象、命名空间和作用域

    函数的使用原则 函数的使用必须遵循:先定义后使用的原则 函数的定义,与变量的定义是相似的,如果没有事先定义函数而直接引用就相当于在引用一个不存在变量名 定义阶段:只检测语法,不执行代码,当出现语法错误 ...

  10. 【python】-- 函数非固定参数,返回值(return)

    函数非固定参数 1.默认参数: 代码如下: def information_register(name,age,country,sex): print("----注册信息------&quo ...

随机推荐

  1. AutoreleasePool 的总结

    1.创建和释放时机问题 App启动后,苹果在主线程 RunLoop 里注册了两个 Observer,其回调都是 _wrapRunLoopWithAutoreleasePoolHandler(). 第一 ...

  2. C++笔记(2)——函数

    六. 函数 6.1 函数基础 一个典型的函数(function)定义包括:返回类型(return type).函数名字,由0或多个形参(parameter)组成的列表以及函数体.我们通过调用运算符来执 ...

  3. C++笔记(1)——类的基本概念知识

    C#和C++的部分面向对象方式类似,只记录不同点. 定义类与关键字: 下面是C++类的定义方式与C++关键字public和private的表达方式: class Box { private: // 私 ...

  4. 打造原生 WebGL 2D 引擎:一场创意与技术的融合

    打造原生 WebGL 2D 引擎:一场创意与技术的融合 1.引言 在当今数字化时代,网页的功能越来越丰富,已经远远超越了传统的文本和图片呈现.我们生活在一个充满交互性和视觉魅力的网络世界.每天都会遇到 ...

  5. 2023-7-26 Dynamic替代部分反射的简单实现方式

    Dynamic与反射的使用 [作者]长生 实体类 public class School{ public int GetAge(){ return 100; } } 使用反射获取对象里的方法 Scho ...

  6. html标签tr td是什么意思

    <table>代表表格</table><tr>代表表格中的一行</tr><td>代表表格中的一列</td>'tr'与'td'交成 ...

  7. redis开启多线程

    在Redis 6.0中,非常受关注的第一个新特性就是多线程. 在Redis 6.0中,多线程默认是禁用的,只使用主线程.如果需要使用多线程功能,需要在 redis.conf文件中进行配置(重启服务). ...

  8. IDA常用的插件

    IDA常用的插件 FindCrypto https://github.com/polymorf/findcrypt-yara 算法识别 缺点:对于魔改的地方难以识别,比如对aes的s盒进行加密,运行时 ...

  9. Jni GetMethodID中函数标识sig的详细解释

    在 JNI(Java Native Interface)中,GetMethodID 函数用于获取 Java 类的方法的标识符.这个函数的详细解释如下: cCopy code jmethodID Get ...

  10. 一文了解Validator库

    1. 引言 github.com/go-playground/validator 是一个 Go 语言的库,用于对结构体字段进行验证.它提供了一种简单而灵活的方式来定义验证规则,并在验证过程中检查结构体 ...