首页 > 代码库 > c++模板编程-异质链表
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++模板编程-异质链表
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。