C++17结构化绑定

本文对比了Go语言和C++中处理函数返回多个值的方法。在Go中,函数可以直接返回多个值,而C++则需要通过结构体或std::tuple实现。C++17引入的结构化绑定使得接收多值变得更简洁,类似于Go的语法。通过这些技巧,开发者可以在C++中实现更优雅的代码风格。
摘要由CSDN通过智能技术生成

众所周知,go语言中函数返回多个值很方便,接收函数返回的多个值也很方便,例如:

func f() (string,int){
	return "Naruto",18
}
func main(){
	name,age := f()
}

而在C++中,首先想到的办法是使用结构体,例如:

struct Person
{
    std::string name;
    int age;
};
auto f(){
    return Person{"Naruto",18};
}
auto person = f();
std::cout<<person.name<<" "<<person.age<<std::endl;

如果不想声明结构体,则可以使用std::tuple,例如:

std::tuple<std::string,int> f(){
    return {"Naruto",18};
}
int age;
std::string name;
std::tie(name,age) = f();
std::cout<<name<<" "<<age<<std::endl;

然而要提前声明变量还是很不优雅。C++17引入了结构化绑定,做到了类似go语言的接收返回值方式:

std::tuple<std::string,int> f(){
    return {"Naruto",18};
}
auto[name,age] = f();
std::cout<<name<<" "<<age<<std::endl;

现在就变得非常に优雅です

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值