C++中如何处理多返回值【C++学习笔记】

本文介绍了C++中处理多返回值的几种方式,包括通过引用传递、使用std::array、std::tuple以及定义结构体。对于不同类型的多个返回值,推荐使用struct,因为其具有更好的可读性和效率。同时,文章提到了使用std::pair和std::tuple,虽然方便但可读性较差。

52 C++中如何处理多返回值

如何在在一个函数中有多个返回值呢?

🍅C++提供的处理方式一

void ChangeVal (string &result1, string &result2) {
    result1 = "";
    result2 = "";
}

把函数定义成void,然后通过参数引用传递的形式“返回”两个字符串,这个实际上是修改了目标值,而不是返回值,但某种意义上它确实是返回了两个字符串,而且没有复制操作,技术上可以说是很好的。但这样做会使得函数的形参太多了,可读性降低,有利有弊

🍅C++提供的处理方式二

这种方法要包含头文件#include <array>

设置函数的返回值是一个array(数组)

//设置是array的类型是stirng,大小是2
std::array<std::string, 2> ChangeString() {
    std::string a = "1";
    std::string b = "2";
    
    std::array<std::string, 2> result;
    result[0] = a;
    result[1] = b;
    return result;
    
    //也可以return std::array<std::string, 2>(a, b);
}

当然,这里也可以返回一个vector,同样可以达成返回多个数据的目的

不同点是Array是在栈上创建,而vector会把它的底层储存在堆上,所以从技术上说,返回Array会更快

但以上方法都只适用于相同类型的多种数据的返回

如果想要不同类型的数据返回,可以用**tuple(元组)pair**

  • tuple相当于一个类,它可以包含x个变量,但他不关心类型,用tuple需要包含头文件#include <tuple>

    std::tuple<std::string, int> Function {
        return std::make_pair(string, int);
        //make_pair不止用在pair上!它的适用范围极广!!!
    }
    

然后从元组中取元素相当麻烦,这里建议用pair,这里就当介绍一下元组,了解一下好了

🍅🍅🍅Cherno哥推荐:返回一个结构体

#include <iostream>
struct result {
	std::string str;
    int val;
};
result Function () {
	return {"1", 1};//C++新特性,可以直接这样子让函数自动补全成结构体
    //太方便了吧!
}
int main() {
    auto temp = Function();
    std::cout << temp.str << ' ' << temp.val << std::endl;
}

结构体是在栈上建立的,所以在技术上速度也是可以接受的

而且不像用pair的时候使用只能temp.first, temp.second,这样不清楚前后值是什么,可读性不佳。而如果换成temp.str, temp.val后可读性极佳,永远不会弄混!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值