以前一直用CArray,今天发现有CList?
可是我觉得CList的功能好像CArray都能实现
那什么时候用CList呢?
谢谢!

解决方案 »

  1.   

    CList和CArray基本上是一样的!只是操作函数不同。如果是元素个数不确定,并且需要遍历最好使用CList。CArray用于知道元素个数,并且直接指定元素位置访问的情况,这时只是移动指针,访问速度比较快!
      

  2.   

    请参考贴:
    http://community.csdn.net/Expert/topic/3665/3665579.xml?temp=.1573908
      

  3.   

    顾名思义,CArray是数组,CList是链表。
    如果查询是主要操作,建议使用数组,如果是插入和删除操作占主要的,则应该使用链表。
      

  4.   

    ditto
    就是上面说的array和list嘛!
      

  5.   

    ditto 让我想起《人鬼情未了》,哈哈。
      

  6.   

    CArray是数组,这个数组与语言给的数组可以改变随意数组长度大小的,但经常做这个操作影响性能的这时候就要用CList了,链表做增加,删除操作是最善长的了.如果数据很少增减而是做查询或修改的操作的话,建议还是用数组吧.
      

  7.   

    数组和链表的差别~~~~~~~~数据结构书上讲了why的
      

  8.   

    性能不同!array是支持随机访问的。但是在数组中间插入删除时时间复杂度为o(n)
    而list不支持随即访问,访问的时间复杂度为o(n),但是插入、删除时间复杂度为常数。
      

  9.   

    CArray   CArray 提供了规则数组不具备的灵活性,但是程序可能不需要它。如果知道数组的特定限制,反而可以使用全局固定数组。如果使用 CArray,当需要重新分配时,使用 CArray::SetSize 建立它的大小并指定增长的元素数。否则,添加元素可能导致数组经常重新分配和复制,这样做效率很低而且可能产生内存碎片。还需注意的是,如果将一项插入数组中,则 CArray 移动内存中后面的项并且可能需要增长数组。这些操作可能导致缓存未命中和页错误。如果浏览 MFC 使用的代码,可能会明白可编写一些更特定于方案的东西以提高性能。例如,由于 CArray 是一个模板,可以提供特定类型的 CArray 专用化。
    CList   CList 是双向链接表,因此头、尾和表中已知位置 (POSITION) 的元素插入速度很快。按值或者索引查找需要顺序搜索,然而如果表很长则速度可能慢。如果代码不要求双向链接表,可能需要重新考虑使用 CList。使用单向链接表可省去更新所有操作的附加指针以及该指针的内存的系统开销。这种附加内存不太好,但却是解决缓存未命中或页错误的另一种可能的方法。