IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> C++函数返回多个值:结构体、tuple -> 正文阅读

[C++知识库]C++函数返回多个值:结构体、tuple

C++函数一般可以返回一个值,但是在使用中常常需要一个函数返回多个值,因此可以使用结构体tuple来进行实现。

注意看代码里的注释!!!

1.使用结构体返回多个值

实现步骤:
1.先定义一个结构体
2.准备我们要实现的函数(需要返回多个值)
3.在要实现的函数内调用结构体返回多个值
4.使用函数返回结果

代码示例:

step 1 :定义结构体 
struct  PointStruct
{
    float without_floor;
    int only_floor;
};

首先定义一个结构体,我们命名为PointStruct,你可以随意起想要的名称。假设我们的函数要返回的参数有两个,一个是float类型的,一个是int类型的,那么就在PointStruct这个函数里面进行定义一下。如果想要返回更多的数据,直接写在PointStruct函数里即可。

step 2 :定义函数 
//定义了一个返回值为PointStruct的函数,函数名为filterFloorPoint
PointStruct filterFloorPoint( int max_iterations,float in_floor_max_angle,float Distance_Threshold)
{
    int result_iterations;
    float result_angle_add_distance;
    result_iterations=max_iterations*100;
    result_angle_add_distance=in_floor_max_angle*Distance_Threshold;
    //此时,我们想要函数返回result_iterations和result_angle_add_distance两个值


    //step 3:调用结构体返回多个值 
    //调用PointStruct结构体返回多个值 
    PointStruct use_PointStruct;  //use_PointStruct 可以换成你自己想要的名称
    use_PointStruct.without_floor=result_iterations;
    use_PointStruct.only_floor=result_angle_add_distance;

    return use_PointStruct; //只需要返回 use_PointStruct即可
}

这里我们定义了一个函数filterFloorPoint,想要这个函数返回两个值,一个值为 int 类型的result_iterations,一个值为float类型的result_angle_add_distance

只需要在函数的最后,对第一步定义好的PointStruct结构体进行调用。如上面代码所示。

int main()
{
	 //step 4:调用结构体返回的多个值
	int max_iterations=10;
	float in_floor_max_angle=10.0;
	float Distance_Threshold=10.0;
	
	int without_floor_cloud_ptr;
	float only_floor_cloud_ptr;  
	PointStruct  use_PointStruct_now; //调用PointStruct结构体
	
	 use_PointStruct_now=filterFloorPoint(max_iterations,in_floor_max_angle,Distance_Threshold); //调用函数
	 without_floor_cloud_ptr=use_PointStruct_now.without_floor; //取第一个函数返回值
	 only_floor_cloud_ptr=use_PointStruct_now.only_floor;//取第二个函数返回值
	 return 0;
}

2.使用tuple返回多个值

相比于结构体,要实现函数返回多个值的方法,使用tuple更为简洁、灵活。
实现步骤:
定义函数f(x):类型为tuple
函数返回多个值:使用make_tuple(result1,result2,...)
使用函数结果:result=f(x)
取函数返回值:result1=get<0>(result); result2=get<1>(result);

代码示例:

tuple<int, float>  filterFloorPoint( int max_iterations,float in_floor_max_angle,float Distance_Threshold)
{
    int result_iterations;
    float result_angle_add_distance;
    result_iterations=max_iterations*100;
    result_angle_add_distance=in_floor_max_angle*Distance_Threshold;
    //此时,我们想要函数返回result_iterations和result_angle_add_distance两个值

//使用make_tuple将要返回的数据写在()里面即可,注意数据类型的顺序
    return make_tuple(result_iterations,result_angle_add_distance); 
}

这里我们定义了一个返回值类型为tuple的函数filterFloorPoint,其实现内容和普通函数无异,只是在函数的返回值处使用了make_tuple()方法将要返回的数据写在里面。那么我们如何对结果进行取值使用呢?

int main()
{
	int max_iterations=10;
	float in_floor_max_angle=10.0;
	float Distance_Threshold=10.0;
	
	tuple<int, float>  get_filterFloorPoint_result;
	 //调用 filterFloorPoint 方法
	get_filterFloorPoint_result=filterFloorPoint(max_iterations,in_floor_max_angle,Distance_Threshold);
	without_floor_cloud_ptr=get<0>(get_filterFloorPoint_result); //取第一个值
	only_floor_cloud_ptr=get<1>(get_filterFloorPoint_result);  //取第二个值
	 return 0;
}

这里我们使用了get<i>方法对函数返回结果进行取值,i为我们的返回值序号。

综上所述,个人觉得使用tuple方法更为便捷,因为不需要定义结构体,且在函数内只需要对返回值类型进行修改、对返回值使用make_tuple()方法进行包装,在调用的时候根据索引来调用更好理解。但需要注意返回参数的顺序不要混淆。

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-04-01 23:08:08  更:2022-04-01 23:10:42 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 2:37:59-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码