C++ – 函数返回多个返回值的方法总结

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/,更多干货!

来源:HW140701

物联沃分享整理
物联沃-IOTWORD物联网 » C++ – 函数返回多个返回值的方法总结

发表评论