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;
  • 相关阅读:
    Spinal Tap Case
    Sorted Union
    Search and Replace
    Boo who
    Missing letters
    DNA Pairing
    Pig Latin
    Where art thou
    Roman Numeral Converter
    Redis高级客户端Lettuce详解
  • 原文地址:https://www.cnblogs.com/sixue/p/3991627.html
Copyright © 2011-2022 走看看