如题

解决方案 »

  1.   

    CList相当于Double-linked-link(双向链表)
    CArray相当于C里面的Array(队列)
      

  2.   

    CArray采用队列方式存储数据,因而其内部数据元素是以物理方式顺序排列的,所以检索、顺序执行GetAt()等函数的速度是相当快的。但是由于每次队列长度变化后,数据都要重新申请内存、拷贝内存、释放内存,因而Insert/Add/RemoveAt()的速度都很慢。CList采用链表方式存储数据,因而当链表数据有所变动时,只做了一下指向变动,所以即使数据元素非常多单个数据元素也很大,执行Insert/Add/Remove的速度都很快,但是因为没有统一的Index,因而如果要找到某个元素只有遍历整个链表。整体上说,List的使用比较繁琐,特别为小尺寸数据设计List更是得不偿失的,这也是为什么有CWordArray而没有CWordList的原因,因而在大多数情况下应该有限考虑是否可以使用Array来存储数据。
      

  3.   

    同意楼上 STL 的 vector list可以取代一切数组,M$的CArray真的垃圾
      

  4.   

    CList相当于双向链表,CArray对应数组
      

  5.   

    数组和链表的区别,只不过MFC进行了封装