Register__ 2022-01-22 01:27 采纳率: 89.5%
浏览 44
已结题

C#的ArrayList是如何实现的,一个数组可以存放不同类型的元素

我了解了 C++的模板后 了解了一下 C#中的 ArrayList C#中的ArrayList 可以放不同类型的元素 比如 一个 int 一个 string
我想知道 用C++ 的链表怎么实现 ?
就比如我创建一个 node 节点

template<typename E>class node{
public:
  E value;
  node* next;
}

如果这样 这个 node指针 只能指向 和自己类型相同的 node 也就是说 一串链表 只能 都是一种类型 至于什么类型可以在创建的时候选择,但只能都是一种
我之前提问过这个问题,
有人说 把 node* 改成 void* 那么我用 没法访问或者改变 next 了 (比如在链表中间插入一个链表);
就是 有位 说 C++的 RTTI 可以实现这个,还有什么类型字段 我在C++ primer plus 上看了看 RTTI 我还是有点不理解 RTTI是怎么实现这种功能的 如果用链表的话 这个node 是内部类 不能 给外面访问的,C# 和 java 中都有个 object 类 我不太懂 C++有没有这个

我是想这样的

img

  • 写回答

4条回答 默认 最新

  • orange4reg 2022-01-22 11:07
    关注
    
    
    ```c++
    struct ALN
    {
        void *pdata;
        uint type;
        ALN *next;
    };
    
    ......
        int a=1; //假定int 类型 type 为 0
        char b='3'; // type 为 1
        char str[]="hello word"; // type 为 2 
        //随便你怎么定
    
        ALN *head, *p;
        
        p=malloc sizeof ALN;
        p->pdata=malloc sizeof str;
        strcpy(...);
        p->type=2;
        head=p;
    
        p=malloc sizeof ALN;
        p->pdata=malloc sizeof a;
        *(int *)p->data=a;
        p->type=0;
        head->next=p;
    

    ```

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 1月30日
  • 已采纳回答 1月22日
  • 创建了问题 1月22日

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题