c++使函数返回多个值(c++17特性)

本文介绍了如何在C++中通过使用`tuple`来优雅地解决函数返回多个值的问题,对比了传统的引用和自定义结构体方法,展示了`tuple`的便捷性。通过创建一个`TestMultipleRet`类,定义了一个返回`int`、`string`和`Person`对象的成员函数,并在客户端代码中展示了如何解包和使用返回的多个值。
摘要由CSDN通过智能技术生成

之前希望使用函数返回多个值的时候,基本都是使用引用来搞定,或者是新写一个结构体,但是现在看来这些方案都显得非常呆板,取用返回值都非常不方便,用过python都知道在python中返回多个值只需要:

def func():
	...
	return x,y,z

res1, res2, res3 = func()

这样的使用方法比c++原来的方法要高明得多,因此我去寻找是否有更加modern的解决方案,结果还真有,c++用起来瞬间就舒服多了:

class Person {
    int age;
    string name;

public:
    Person(int age= 10, const string& name = "xiaoming") {
        this->age = age;
        this->name = name;
    }
    friend ostream &operator<<(ostream &os, const Person &person) {
        os << "Person{age: " << person.age << " name: " << person.name << "}";
        return os;
    }
};

class TestMultipleRet {
	// 返回多个值的函数
    tuple<int, string, Person> test() {
        return {1,"xiaoming", Person()};
    }

public:
    void client() {
    	// 获取各个返回值
        auto [age, name, person] = test();
        cout << age << " " << name << " " << person << endl;
    }
};

运行结果:
在这里插入图片描述
完美解决问题。

参考博客:https://www.intmian.com/2019/05/25/c++%E5%A4%9A%E8%BF%94%E5%9B%9E%E5%80%BC/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值