我们知道有各种各样的数据结构,啥栈,队列,树之类的.不过其实这些用的都非常少,用的最多的是线性表.平常我们用的数组最是典型的线性表.我们可以像int [] arrp这样简单的定义一个数组.不过这是固定大小的.不够灵活.所以出现了所谓的动态数组.

STL中的动态数组叫vector,MFC中类似的动态数组是CArray.它跟vector一样也是一个模板类.由于数组嘛插入数据时效率较低,所以又有链表.

STL中的链表是list,MFC中类似的链表是CList(是一个双链表)

CArray 简单用法

CArray<int> ca;

ca.Add(11);  //添加元素

ca.Add(33);

ca.InsertAt(1, 22); //在索引为1的地方插入元素22

ca.RemoveAt(1); //删除索引为1的元素

ca.GetSize(); //得到数组长度

POSITION pos = ca.GetStartPosition(); //POSTION有点类似STL中的迭代器iterator.MFC里没迭代器

int val = ca[0];

ca.RemoveAll();  //删除所有元素

 

CList简单用法

CList<int> list;

list.AddHead(11); //头部插入元素

list.AddHead(22);

list.AddTail(99); //头部移除元素

list.AddTail(88);

list.RemoveHead();//删除头部元素

list.RemovTail();

int count = list.GetCount();

bool empty = list.IsEmpty();

int hVal = list.GetHead();

int tVal  = list.GetTail();

 

POSITION pos = list.GetHeadPosition();

pos = list.GetTailPosition();

int val = list.GetAt(pos);

list.GetNext(pos); //pos移到下一位

pos = list.Find(88);  //找到88所在位置

 

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐