8.1 Tuple库如何改进程序
● 从函数返回多个值
● 将相关的类型组合
● 将值组合起来
与许多其他的编程语言一样,C++允许函数返回一个值。但是,这个值可以是任意的类型,从而允许用struct或者class把多个值组合起来作为结果。虽然可以,但是用这样的结构来组合相关的返回值通常都是很不方便的,因为这意味着要为每一种不同的返回类型定义类型。为了避免在返回值中复制大对象,同时也为了避免创建一个特殊的类型用于从函数返回多个值,常常求助于使用非const的引用参数或者指针参数,从而允许函数通过这些参数设置调用者的变量。在大多数情况下,这样做效果不错,但也有人不愿意使用输出参数。此外,当实际上有多个返回值时,输出参数无法强调这一点。有些时候,std::pair可以满足要求,但在需要返回两个以上值时,它就无法满足要求。
为了提供多个返回值,我们需要一个元组(tuple)构造。一个元组是一个固定大小的、多个指定类型的值的聚集。相应的例子包括:对(pair)、三元组(triple)、四元组(quadruple)等等。有些语言本身就内置有这样的元组类型,但是C++没有。借助C++本身所固有的强大功能,这一缺点可以通过库来获得弥补,大家不必再猜测了,Boost.Tuple库正是这样的一个库。
Tuple库提供了元组构造,通过这个库可以方便地返回多个值,也可以组合任意的类型并以泛型代码来操作这些类型。
图书导读






