zoukankan      html  css  js  c++  java
  • 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;
  • 相关阅读:
    WinForm 窗体应用程序(初步)之一
    ADO.NET
    面向对象思想
    数据库原理
    HTML学习总结
    c# 学习心得(2)
    c# 学习心得(1)
    《大话数据结构》读书笔记(2)
    《大话数据结构》读书笔记(1)
    ASP.NET Core学习总结(3)
  • 原文地址:https://www.cnblogs.com/sixue/p/3991627.html
Copyright © 2011-2022 走看看