首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 开源 FAQ 第二书店 博文视点 程序员
频道: 研发 数据库 中间件 信息化 视频 .NET Java 游戏 移动 服务: 人才 外包 培训
    图书品种:235680
       
热门搜索: ASP.NET Ajax Spring Hibernate Java

8.1  Tuple库如何改进程序

●       从函数返回多个值

●       将相关的类型组合

●       将值组合起来

与许多其他的编程语言一样,C++允许函数返回一个值。但是,这个值可以是任意的类型,从而允许用struct或者class把多个值组合起来作为结果。虽然可以,但是用这样的结构来组合相关的返回值通常都是很不方便的,因为这意味着要为每一种不同的返回类型定义类型。为了避免在返回值中复制大对象,同时也为了避免创建一个特殊的类型用于从函数返回多个值,常常求助于使用非const的引用参数或者指针参数,从而允许函数通过这些参数设置调用者的变量。在大多数情况下,这样做效果不错,但也有人不愿意使用输出参数。此外,当实际上有多个返回值时,输出参数无法强调这一点。有些时候,std::pair可以满足要求,但在需要返回两个以上值时,它就无法满足要求。

为了提供多个返回值,我们需要一个元组(tuple)构造。一个元组是一个固定大小的、多个指定类型的值的聚集。相应的例子包括:对(pair)、三元组(triple)、四元组(quadruple)等等。有些语言本身就内置有这样的元组类型,但是C++没有。借助C++本身所固有的强大功能,这一缺点可以通过库来获得弥补,大家不必再猜测了,Boost.Tuple库正是这样的一个库。

Tuple库提供了元组构造,通过这个库可以方便地返回多个值,也可以组合任意的类型并以泛型代码来操作这些类型。

查看所有评论(0)条】

最近评论



正在载入评论列表...
热点评论