功能简介
std::tuple是c++11提供的新模板类,在很多流行语言都有对应的实现,一般翻译为元组。使用它可以把多个不同类型的变量组合成一个对象。
简单示例
以下是std::tuple的简单示例(来源:https://en.cppreference.com/w/cpp/utility/tuple)
1 |
|
和struct比较
先看例子,再做比较
1 | struct student { |
相比较于std::tuple,struct需要定义结构体这个复合类型。
如果单说以上所举例的这个场景,个人觉得struct的写法表意更清晰些。
原因是函数get_student所返回的gpa、grade、name三个元素变量在含义上本身是非常紧密的。
假设我们除了这个函数,还有其他地方需要同时使用这三个变量,比如update_student或print_student等,那么struct的写法将更合适些。
多说一句,作为开发,我们要保持学习新知识的习惯。但是不能有了新锤子,就看哪都是钉子。为了用新技术而用。
而应该带着新锤子,观察和思考哪有合适钉子,再合理运用。
和std::pair比较
先看例子,再做比较
1 | std::pair<double, std::pair<char, std::string> > get_student(int id) { |
相比较于std::tuple,std::pair如果想要支持多于2个的变量,需要多层嵌套或结合struct使用。
std::tie的其他用法
std::tie除了第一个例子中演示的用于解构std::tuple中的元素,还可以用来将多个变量构造成std::tuple,从而做大小比较。例如 https://en.cppreference.com/w/cpp/utility/tuple/tie 中演示的例子。这种写法更modern些~
结尾
参考链接
本文完,作者yoko,尊重劳动人民成果,转载请注明原文出处: https://pengrl.com/p/58825/