分析库和它的应用

ZDNet软件频道 时间:2004-11-08 作者:Builder.com |  我要评论()
本文关键词:cpptips DannyKalev
C++ 标准委员会正在进行标准库(Standard Library)的扩展工作。
本文译自Builder.com,未经许可请勿转载 C++ 标准委员会正在进行标准库(Standard Library)的扩展工作。这个扩展包括一个新的tuple库。下面我将讨论这个库和它的应用。(目前标准库文件中还没有包含这个库,所以你需要从 Boost 下载它的源文件。)

什么是tuple

Tuple是一个大小固定的异构对象集合。Tuple类型有很多有用的应用,比如封装一个函数的多个返回值以及模拟多个对象的同时赋值。

Tuple的大小是指它所包含的元素的个数。目前的tuple库支持0-10个元素的tuple。每个元素可以是不同的类型。下面的例子创建一个具有两个元素(分别为 float 和 void *)和一个匹配初始化器的tuple。

#include <tuple>
tuple <float, void *> t(2.5, NULL);

如果忽略初始化器,会使用默认的初始化过程:

tuple <double, string> t; //initialized to (0.0, string())

辅助函数

Tuple库包括几个辅助函数,例如,make_tuple() 函数根据其参数实例化一个tuple类型:

voidfunc(int n);
make_tuple(func); // returns: tuple < void (*)(int) >
make_tuple("test", 9); // tuple < const char (&)[5], int >

tuple_size() 函数返回一个tuple的大小:

int n=tuple_size < tuple < int, string > >::value; // 2

tuple_element() 函数检索单个元素的类型。这个函数接收一个索引和tuple类型:

// get thefirst element's type, i.e., float
T=tuple_element < 0, tuple < float, int, char > >::type;

要访问元素本身,请使用 get() 函数模板。模板参数(也就是尖括号中括起来的参数)是元素的索引,圆括号中的参数是tuple类型:

tuple <int, double> tpl;
int n=get <0> (tpl); //read 1st element
get <1> (t)=9.5; //assign the 2nd element

应用

tuple可以用来封装一个函数的多个返回值。例如:

typedeftuple < const char *, wchar_t* > mychar_t;
mychar_tmygetenv(const mychar_t &);


Danny Kalev是一个具有14年经验的系统分析家、软件工程师,尤其擅长C++ 和面向对象设计。


责任编辑:李宁

欢迎评论投稿

百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134