75.结构化 in C++17
今天的主题:结构化绑定,只针对C++17
结构化绑定是一个新特性,让我们更好的处理多返回值
(曾有一回谈过如何处理多返回值,当时是用了结构体去处理,而这个结构化绑定就是在这个的基础上拓展的一种新方法,特别是处理元组,对组(pairs)以及返回诸如此类的东西
🍅没用结构化前的应对多返回值
先看以前应对多返回值的方法
#include <iostream>
#include <string>
#include <tuple>
std::tuple<std::string, int> CreatPerson() {
return { "Cherno", 24};
}
int main() {
auto person = CreatPerson();
std::string &name = std::get<0>(person); //获取元组的数据
int age = std::get<1>(person);
//说实话,元组的数据获取有点太晦涩了不能像结构体一样直接XXX.age这样访问更加可读
//tie会好一点
std::string name;
int age;
std::tie(name, age) = CreatPerson;
}
但以上的方法都还不如直接用结构体更加简易可读
当然,接下来就是结构化绑定的引出了
🍅用了结构化后的处理多返回值
#include <iostream>
#include <string>
#include <tuple>
std::tuple<std::string, int> CreatPerson() {
return { "Cherno", 24};
}
int main() {
auto[name, age] = CreatPerson(); //直接用name和age来储存返回的值
}
这个只有在C++17才可实现,相当简便和可读