码迷,mamicode.com
首页 > 编程语言 > 详细

c++模板编程-异质链表

时间:2014-09-24 23:15:37      阅读:258      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   ar   数据   div   sp   on   c   

概念:

   像一个普通的链表结点中,其中成员next通常是指向同类型结点的指针.这就约束了链表中结点必须是同一类型,从而整个链表都只能保存同一类型的数据。而异质链表则是让next指向任何一种类型,也包括存有其他类型值得结点。这里就采用模板的方式.

数据结构:

 

template<typename T,typename N>
struct hetero_node{
     T value;
     N* next;
     hetero_node(T const& v,N* n):value(v),next(n){}
};
//hetero_node有两个模板参数,T定义结点所保存的数据类型,而N则定义链表中下一个结点的类型.

 

假设我们现在要一个数据结构保存三个数据分别为int,char及std::string类型,则用hetero_node类模板可以构造出一个拥有三个结点分别保存三个数据的异质链表.具体代码:

typedef hetero_node<char,void> node_0;
node_0 *p0;
typedef hetero_node<int,node_0> node_1;
node_1 *p1;
typedef hetero_node<std::string,node_1> node_2;
node_2 *p2;

p1->next=p0;
p2->next=p1;

 

c++模板编程-异质链表

标签:style   blog   color   ar   数据   div   sp   on   c   

原文地址:http://www.cnblogs.com/sixue/p/3991627.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!