免费用手机建立网站,东台网站建设,景区旅游门户网站建设方案,万网域名续费优惠std::tuple是C11提供的新模板类#xff0c;可以翻译为“元组”#xff0c;可把多个不同类型的变量组合成一个对象。std::tuple可看做std::pair的泛化实现#xff0c;std::pair包含两个元素#xff0c;std::tuple 可以同时包含多个元素#xff0c;它拥有 struct 的表现11提供的新模板类可以翻译为“元组”可把多个不同类型的变量组合成一个对象。std::tuple可看做std::pair的泛化实现std::pair包含两个元素std::tuple 可以同时包含多个元素它拥有 struct 的表现但是无需定义实际的 struct可用于一个函数返回多个值的场景下。
从实际使用来看struct的可读性比std::tuple的。当我们希望将一些数据组合成单一对象但又不想定义一个新数据结构来表示这些数据时std::tuple是相对合适我们可以把std::tuple看作一个”快速而随意”的数据结构。
std::tuple元素是位于连续的内存区域而非链式结构。
废话不多说上代码
#include tuple
#include iostream
#include string
#include stdexceptstd::tupledouble, char, std::string get_student(int id)
{if (id 0) return std::make_tuple(3.8, A, Lisa Simpson);if (id 1) return std::make_tuple(2.9, C, Milhouse Van Houten);if (id 2) return std::make_tuple(1.7, D, Ralph Wiggum);throw std::invalid_argument(id);
}int main()
{auto student0 get_student(0);std::cout ID: 0, GPA: std::get0(student0) , grade: std::get1(student0) , name: std::get2(student0) \n;double gpa1;char grade1;std::string name1;std::tie(gpa1, grade1, name1) get_student(1);std::cout ID: 1, GPA: gpa1 , grade: grade1 , name: name1 \n;// C17 结构化绑定auto [ gpa2, grade2, name2 ] get_student(2);std::cout ID: 2, GPA: gpa2 , grade: grade2 , name: name2 \n;
}
输出结果如下
ID: 0, GPA: 3.8, grade: A, name: Lisa Simpson
ID: 1, GPA: 2.9, grade: C, name: Milhouse Van Houten
ID: 2, GPA: 1.7, grade: D, name: Ralph Wiggum
细心的开发者可能会问 std::tiestd::tie作用是将变量的引用整合成一个tuple从而实现批量赋值。