1 C++函数如何像python一样返回多个返回值

使用过python的童鞋都知道,在python单个函数中可以返回多个函数值,比如:

# -*- coding: utf-8 -*-def return_muliti_value():return 1,'helloworld',[1,2,3]if __name__ == '__main__':a,b,c = return_muliti_value()print(a)print(b)print(c)

使用过C++同学的都知道,C++从语言标准上只允许函数返回一个返回值,比如

#include <iostream>int GetAge()
{return 18;
}int main()
{int age = GetAge();return 0;
}

但是在有的情况下我们需要函数返回多个返回值,比如返回值包括当前操作状态、返回值1、返回值2…。那么C++有没有方式可以在单个函数中返回多个返回值,让枯燥的C艹编程变得有趣起来呢?下面总结几种可以在单个函数中返回多个返回值的方法。

2 C++单个函数返回多个返回值的方法

2.1 函数参数传引用的方式

在单个函数参数中传递多个函数参数引用,这样就可以在函数中直接对所传递的参数进行赋值操作,从而达到返回多个返回值的目的,这种方式在作用上可以达到返回多个返回值的目的,但是写法上并不如python来的那么直观。

#include <iostream>void GetUserAge(const std::string& user_name,bool& work_status,int& age)
{if (user_name.compare("xiaoli") == 0){work_status = true;age = 18;}else{work_status = false;age = -1;}
}int main()
{bool work_status = false;int age = -1;GetUserAge("xiaoli", work_status, age);std::cout << "查询结果:" << work_status << "  " << "年龄:" << age << std::endl;getchar();return 0;
}

2.2 使用std::pair返回两个返回值

使用std::pair这种抽象数据结构,该数据结构可以绑定两个异构成员。这种方式的弊端是只能返回两个值。

#include <iostream>std::pair<bool, int> GetUserAge(const std::string& user_name)
{std::pair<bool, int> result;if (user_name.compare("xiaoli") == 0){result = std::make_pair(true, 18);}else{result = std::make_pair(false, -1);}return result;
}int main()
{std::pair<bool, int> result = GetUserAge("xiaolili");std::cout << "查询结果:" << result.first << "    " << "年龄:" << result.second << std::endl;getchar();return 0;
}

2.3 使用std::tuple返回三个或者三个以上返回值

std::tuple这种抽象数据结构可以将三个或者三个以上的异构成员绑定在一起,返回std::tuple作为函数返回值理论上可以返回三个或者三个以上的返回值。

#include <iostream>
#include <tuple>std::tuple<bool, int,int> GetUserAge(const std::string& user_name)
{std::tuple<bool, int,int> result;if (user_name.compare("xiaoli") == 0){result = std::make_tuple(true, 18,0);}else{result = std::make_tuple(false, -1,-1);}return result;
}int main()
{std::tuple<bool, int,int> result = GetUserAge("xiaolili");bool work_status;int age;int user_id;std::tie(work_status, age, user_id) = result;std::cout << "查询结果:" << work_status << " " << "年龄:" << age <<"  "<<"用户id:"<<user_id <<std::endl;getchar();return 0;
}

如果有兴趣,可以访问我的个站:https://www.stubbornhuang.com/,更多干货!

C++ - 函数返回多个返回值的方法总结相关推荐

  1. crc32函数python,python求crc32值的方法

    本文实例讲述了python求crc32值的方法.分享给大家供大家参考.具体实现方法如下: 要想求CRC值,前面要import binascii binascii.crc32(v) 求出了v的crc32 ...

  2. python函数+定义+调用+多返回值+匿名函数+lambda+高级函数(reduce、map、filter)

    python函数+定义+调用+多返回值+匿名函数+lambda+高级函数(reduce.map.filter) Python 中函数的应用非常广泛,比如 input() .print().range( ...

  3. python怎么调用函数的返回值类型,10、Python基础之函数的调用与返回值

    一.函数参数 1.1 不定长参数 当我们定义函数时,可能需要定义一个函数能处理比当初声明时更多的参数,这些参数叫做不定长参数. 我们可以在形参前面加上一个 * ,这样这个形参就可以获取所有的实参,它将 ...

  4. 函数中参数有数组时注意的小问题(不一定要传递数组长度,不用返回数组,可以在函数中改变数组元素值)

    函数中参数有数组时注意的小问题: 1.不一定要传递数组长度 2.不用返回数组,可以在函数中改变数组元素值 通过下面这个小例子来验证: #include<iostream> #include ...

  5. c++ 一个函数包括多个返回值判断_轻松玩转函数式编程

    最近和一些同学讨论了函数式编程,很多同学总觉得听起来很高大上,但用起来却无从下手.于是我抽时间捋了捋,将平时工作中用到的函数式编程案例和思想整理了出来,相信阅读本文后,大家都能快速上手函数式编程. 函 ...

  6. Python基础day04【函数(定义与调用、文档说明、传参函数、全局变量、返回值、嵌套调用)】

    视频.源码.课件.软件.笔记:超全面Python基础入门教程[十天课程]博客笔记汇总表[黑马程序员] Python基础day04[字典]    目录 3.函数 函数的定义和调用 函数定义 PEP8规范 ...

  7. py函数两个返回值_Python 函数为什么会默认返回 None?

    Python 有一项默认的做法,很多编程语言都没有--它的所有函数都会有一个返回值,不管你有没有写 return 语句. 本文出自"Python为什么"系列,在正式开始之前,我们就 ...

  8. python中表达式4**0.5的值为_Python内置函数__用来返回序列中的最小元素

    [填空题]表达式 int(4**0.5) 的值为 [判断题]3+4j不是合法的Python表达式. [填空题]已知列表对象x = ['11', '2', '3'],则表达式 max(x) 的值为 [填 ...

  9. c++ 一个函数包括多个返回值判断_Python函数的概念和使用

    函数 为了便于程序的维护和更好的实现模块化,好的程序都会分解为很多函数. 可以这么说,对于任何的编程语言,函数都是一个非常重要的概念. python 不仅简化了函数的定义过程,而且还大量借鉴了其他函数 ...

  10. C函数实现返回多个值的方法

    C语言中,一个函数最多只能实现一个返回值. int func (int b) { int a=5; if (a>b) return a; else return b; return 0; } 通 ...

最新文章

  1. 资源|2018年14个顶级AI和机器学习会议名录
  2. 终于有人手把手用Java实现超市管理系统
  3. 【IOS 开发】Object - C 面向对象 - 类 , 对象 , 成员变量 , 成员方法
  4. Python: Convert rst to html
  5. win7系统mysql连接不上数据库吗_Win7系统使用数据库时mysql频繁掉线无法连接的两种解决方法...
  6. WinAPI: SetTextJustification - 设置两端对齐
  7. vue项目H5 跳转微信小程序
  8. python 发送邮件附件csv_python给指定csv表格中的联系人群发邮件(带附件的邮件)
  9. wait放弃对象锁_Java线程:notify()和wait()示例
  10. w5500telnet协议详解_STM32F103VCT6+W5500 telnet功能实现
  11. (二)市场调查大赛系列——市场调查问卷设计
  12. win2008服务器系统玩红警,win8系统玩红警2共和国卡死的解决办法
  13. 用Python实现《沉默的真相》3万+弹幕情感分析
  14. Android安装步骤
  15. 炫舞滑板机器人_教程丨自制鬼畜滑板机器人,用纸壳就能做
  16. web前端学习(三):微信小程序基于H5规范,开发Android应用程序
  17. Linux Shell相关记笔记
  18. fireworks 制作html,如何在 Fireworks 8中创建HTML切片
  19. Win10如何用记事本建立Json格式文件
  20. 债券逆回购 上海深圳市场 操作指南

热门文章

  1. uniapp 手持pda 扫描 功能
  2. BZOJ3730 震波+BZOJ4372 烁烁的游戏(动态点分治)
  3. 利用NI模拟量输出板卡LabVIEW输出正弦波形的方法
  4. ad打开ddb文件_如何用AD10打开DDB文件
  5. UV法测量cod原理及特点
  6. 绿联硬盘盒linux驱动,绿联 USB3.0 SATA 接口通用移动硬盘盒子体验与选购技巧
  7. linux下的外接显示器设置成竖屏
  8. python matplotlib坐标轴刻度设置
  9. No module named 'pandas.lib'
  10. python单词库_python 单词库