本帖最后由 geniusice18 于 2011-08-10 09:07:24 编辑

解决方案 »

  1.   

    std::map<>
    这样查找会快一些!
      

  2.   

    滚动条大小等可以考虑动态计算,即先确定值,不用每次都计算,只计算插入,删除,伸缩,扩展对高度的影响,调整滚动条。
    数据结构的操作,查找不会慢,10000条数据而已,可能慢在你的绘制上。
    最好不要想自己做一套,参考MFC的几个函数getfirstvisible,getnextvisible.
      

  3.   

    内存中也用树。每个节点保存parent, previous sibling, next sibling, first child
      

  4.   

    可以用map<树根,map<子树> >来建立内存树
      

  5.   

    就是:struct  TreeItem
    {
          CString strText;
          list<TreeItem*> SubItems;
    };
      

  6.   


    可以用两个容器来保存显示项目:
    1. map保存显示项目的指针
    2. vector也保存显示项目的指针直接访问的话用map,很快
    排序的话直接排vector,排序算法可以自己写
    显示用vector就是添加和删除显示项麻烦些,要管理两个容器
      

  7.   


    可以用两个容器来保存显示项目:
    1. map保存显示项目的指针
    2. vector也保存显示项目的指针直接访问的话用map,很快
    排序的话直接排vector,排序算法可以自己写
    显示用vector就是添加和删除显示项麻烦些,要管理两个容器
    容器嵌套使用是一个很危险的事情,容器的大小是系统自动管理的,起始地址可能会发生改变