首页 > 编程语言 >C++函数如何具有多个返回值?

C++函数如何具有多个返回值?

时间:2023-10-21 12:56:03浏览次数:34  
标签:函数 double C++ paf pair 返回值

  本文介绍在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>类型的数据,再依次从这一元组类型的数据中提取出三个返回值的具体数值。

  至此,大功告成。

标签:函数,double,C++,paf,pair,返回值
From: https://www.cnblogs.com/fkxxgis/p/17778810.html

相关文章

  • 无涯教程-Arduino - Multi-Dimensional Arrays函数
    具有二维的数组(即下标)通常表示由以行和列排列的信息组成的值表。intb[2][2]={{1,2},{3,4}};这些值按大括号按行分组,因此,1和2分别初始化b[0][0]和b[0][1],而3和4分别初始化b[1][0]和b[1][1],如果给定行的初始化程序不足,则将该行的其余元素初始化为0。因此......
  • disp函数/fprintf函数/arrayfun函数
    disp命令只能打印多个变量的值打印多个变量时,可以把它们放在一个数组中或结构体中fprintf命令打印多个变量fpritf(fileID,formatSpec,A1,A2,A3...)arrayfun(func,A)将func应用于A的每个元素functiony=f(x)...endx=-2:1:2;y=arrayfun(@f,x);plot(x,y)......
  • 无涯教程-Arduino - micros()函数
    micros()函数返回从Arduino开发板开始运行当前程序起的毫秒数,该数字溢出,即大约70分钟后恢复为零。micros-语法micros();此函数返回自程序启动以来的微秒数(无符号长)micros-示例unsignedlongtime;voidsetup(){Serial.begin(9600);}voidloop(){......
  • FreeRTOS入门教程(事件组概念和函数使用)
    (文章目录)前言本篇文章将带大家学习什么是事件组以及如何使用事件组。一、事件组概念事件组通常是由一组位(bits)组成的数据结构,其中每一位都对应着某个特定的事件。每个位可以被设置或清除,表示相应的事件发生或未发生。这种位的组合形成了一个类似于二进制数的集合,每个位都代......
  • 1.基础知识(6) --Matlab 函数使用总结
    ✅作者简介:热爱科研的算法开发者,Python、Matlab项目可交流、沟通、学习。......
  • 无涯教程-Arduino - delayMicroseconds()函数
    delayMicroseconds()函数接受一个整数(或数字)参数,该数字表示时间,以微秒为单位,一毫秒有一千微秒,一秒有一百万微秒。当前,可以产生准确延迟的最大值是16383,这可能会在将来的Arduino版本中改变,对于超过几千微秒的延迟,应改为使用delay()函数。delayMicroseconds-语法delayMicr......
  • C++语言基础纲要
    1、C++程序的结构2、输出语句cout<<5<<"hello"<<endl;3、输入语句cin>>a;4、变量 三要素:类型变量名值 命名规则 使用原则5、常量const关键字修饰6、基本数据类型 整型 int 3588 浮点型 double双精度float单精度 字符型 char'A''8' 布尔类型 boolt......
  • C++数据类型:
    C++数据类型:一:基本数据类型类型关键字布尔型bool字符型char整型int浮点型float双浮点型double无类型void宽字符型wchar_t其实wchar_t是这样来的:typedefshortintwchar_t;所以wchar_t实际上的空间是和shortint一样。一些基本......
  • 函数调用 实参——形参
    函数调用 实参——形参传值,实参与形参无关,即形参变,实参一定不改变传地址(即指针变量),形参变,实参可以变(也可以不变)引用传递,形参变,实参一定改变......
  • 求平均工资大于2500的部门平均工资是 having 新面孔比where强大的地方就在于它可以跟
       ---------------------------- ......