设为首页 加入收藏

TOP

2.4.2 用类实现元组
2013-10-07 16:30:35 来源: 作者: 【 】 浏览:103
Tags:2.4.2 实现 元组

2.4.2 用类实现元组

实际上,最直接的元组构造法就是摒弃嵌套,直接用一个类来实现。还是以三元组为例,则下面的类模板就可构造任意元素类型的三元组:

  1. template<typename T0, typename T1, typename T2> 
  2. struct tuple3  
  3. {  
  4.     T0 v0;  
  5.     T1 v1;  
  6.     T2 v2;  
  7.     tuple3(T0 const &_v0, T1 const &_v1, T2 const &_v2) :  
  8.         v0(_v0), v1(_v1), v2(_v2) {}  
  9. }; 

以此法构造元组不会有额外存储开销,构造时也不存在重复复制问题。但其缺点也很明显,就是只能构造三元组。假如需要一个可存4个元素的元组时,需要另外准备一个类模板tuple4。为应付各种可能的元素数目,就可能需要准备从tuple1到tuple20的一系列类模板。当类模板很简单时可以一一写成,但如果要为这一组模板稍稍增加一些功能,例如重载一些运算符,则代码量会大大增加。不过,利用C++(www.cppentry.com)语言中的宏定义,可以很方便地自动生成从tuple1到tuple20的所有类模板。C++(www.cppentry.com)库boost采用该方式来实现元组类boost::tuple。

现在,随着C++(www.cppentry.com)11新标准中引入变长模板参数,更可以轻松实现能保存任意数目任意类型的元组类模板,在随后有关新标准的章节中会详细介绍其实现方法。

回到本篇的主旨类模板上,从链表节点的例子可以看到,数据结构可以摆脱具体数据类型的束缚而抽象成类模板。再进一步,类模板扩展了软件开发者的设计思路,以简单几行模板代码就可实现原本几乎不可能实现的数据结构,如异质模板。类模板的灵活之处还在于扩展了C++(www.cppentry.com)语言本身,原本并不属于C++(www.cppentry.com)内置的数据结构(如元组),经由类模板实现后也可轻松使用。
 

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇2.4.1 通过嵌套实现元组 下一篇2.5.1 成员函数模板

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: