函数

  • CList::AddTail,从尾部添加元素
  • CList::GetTailPosition,获得此列表尾部元素的位置
  • CList::GetPrev,获取上一个元素
  • CList::GetNext,获取下一个元素
  • CList::GetHeadPosition,获取首元素位置
  • CList::GetTailPosition,获取最后一个元素位置
  • CList::GetAt,获取指定位置的元素
  • CList::SetAt,更新指定位置的元素
  • CList::RemoveHead,移除头节点元素(不会释放控件)
  • CList::FindIndex,通过索引返回POSITION

      myList.GetAt(myList.FindIndex(0)));
    

CList:简单的列表

CList中存储的是类的对象,当向CList中添加元素时,会新创建一个对象,然后把添加的对象的值复制进去。所以无需使用new指令动态申请内存。当通过函数获取元素时,该元素是保存在CList中的元素,而不是元素副本,但是如果此时直接赋值给另一个对象,则是把对象的内容全部赋值过去,此时这两个对象就没有关系了。如果需要修改CList内的元素内容,此时需要把获取的元素以引用的形式赋值给新创建的元素指针

CController controller;
controllerList.AddTail(controller);//一旦添加进CList,controller就和CList内的元素没有任何关系,尽管他们两个的内容暂时一样,但是如果后面修改controller的内容,不会修改CList内的元素内容。

CController pCtrl = pDoc->m_CRobNetScan.controllerList.GetNext(pos);//pCtrl与CList内元素没有任何关系
CController* ppCtrl = &pDoc->m_CRobNetScan.controllerList.GetNext(pos);//ppCtrl是指向Clist内元素的指针,修改ppCtrl的内容会直接修改CList的元素的内容。