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;
}
本文作者:StubbornHuang
版权声明:本文为站长原创文章,如果转载请注明原文链接!
原文标题:C++ – 函数返回多个返回值的方法总结
原文链接:https://www.stubbornhuang.com/1751/
发布于:2021年10月13日 11:29:15
修改于:2023年06月26日 21:11:21
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
评论
50