std::tuple确实能代替struct。但是,struct的代码更容易读懂,维护起来也更方便;而tuple则在需要灵活组合...
std::tuple可看做std::pair的泛化实现,std::pair包含两个元素,std::tuple 可以同时包含多个元素,它拥有 struct 的表现,但是无需定义实际的 struct,可用于一个函数返回多个值的场景下。 从实际使用来看,struct的可读性比std::tuple的。当我们希望将一些数据组合成单一对象,但又不想定义一个新数据结构来表示这些数...
std::tuple可看做std::pair的泛化实现,std::pair包含两个元素,std::tuple 可以同时包含多个元素,它拥有 struct 的表现,但是无需定义实际的 struct,可用于一个函数返回多个值的场景下。 从实际使用来看,struct的可读性比std::tuple的。当我们希望将一些数据组合成单一对象,但又不想定义一个新数据结构来表示这些数...
std::tuple可看做std::pair的泛化实现,std::pair包含两个元素,std::tuple 可以同时包含多个元素,它拥有 struct 的表现,但是无需定义实际的 struct,可用于一个函数返回多个值的场景下。 从实际使用来看,struct的可读性比std::tuple的。当我们希望将一些数据组合成单一对象,但又不想定义一个新数据结构来表示这些数...
std::tuple是C++11提供的新模板类,可以翻译为“元组”,可把多个不同类型的变量组合成一个对象。std::tuple可看做std::pair的泛化实现,std::pair包含两个元素,std::tuple 可以同时包含多个元素,它拥有 struct 的表现,但是无需定义实际的 struct,可用于一个函数返回多个值的场景下。
在某些情况下,std::tuple 可以代替 struct,但它们有一些明显的区别。struct 是用户自定义的数据类型,...
1template<typename Tuple, size_t N>2structtuple_show3{4staticvoidshow(constTuple &t, std::ostream&os)5{6tuple_show<Tuple, N -1>::show(t, os);7os <<","<< std::get<N -1>(t);8}9};101112//偏特性,可以理解为递归的终止13template<typename Tuple>14structtuple_show < Tuple,1>15...
考虑一个函数返回年龄、性别和名字的场景,使用 std::tuple 将导致调用方难以理解结果的结构。对于获取数据的过程,调用方需要使用 std::get<0>、std::get<1> 等方法,而这使得代码难以阅读和理解。为了解决此类问题,开发者可能考虑使用枚举或 struct。枚举通过定义标识符来增加可读性,但这仍然可能...
打印std::tuple可以将它的元素逐个打印出来,不过非常繁琐,我们可以通过如下通用的打印函数,帮助我们一次性的将tuple的所有要素打印出来。 #include <iostream> #include <tuple> #include <string> // helper function to print a tuple of any size template<class Tuple, std::size_t N> struct TuplePrinter {...
std::tuple是C++11提供的新模板类,可以翻译为“元组”,可把多个不同类型的变量组合成一个对象。std::tuple可看做std::pair的泛化实现,std::pair包含两个元素,std::tuple 可以同时包含多个元素,它拥有 struct 的表现,但是无需定义实际的 struct,可用于一个函数返回多个值的场景下。