MFC Windows程序设计学习笔记--MFC集合类

数组

特定类型的MFC数组类特定类型
CByteArray8位字节,BYTE
CWordArray16位字节,WORD
CDWordArray32位字节,DWORD
CUIntArray无符号整型,UINT
CStringArrayCString
CPtrArray指向void指针
CObArray指向CObject指针

公用的成员函数:
SetSize(int)
[nIndex]
InsertAt(int nIndex, T value, int nTimes)
InsertAt(int nIndex, 数组指针)
SetAt
GetSize
GetUpperBound
RemoveAt
RemoveAll

动态调整数组大小:
为保存数组元素而分配的内存可根据元素的添加或删除而增大或缩小。
SetSize(int)
SetAtGrow
Add
InsertAt
Append
Copy

扩大内存,若内存不足,MFC抛出异常。

try
{
    CUintArray array;
    array.SetSize(1000);
    ...
}
catch(CMemoryException* e)
{
    AfxMessageBox(_T("error"));
    e->Delete();
}

用CArray创建类型安全数组类

CArray<CPoint, CPoint&> array;
for(int i = 0; i < 10; i++)
{
    array.SetAtGrow(i, CPoint(i * 10, 0));
}

int nCount = array.GetSize();
for(int i = 0; i < nCount; i++)
{
    CPoint point = array[i];
}

使用CArray或其它基于模板的MFC集合类,InsertAt被调用时,先用默认构造创建元素,在用赋值完成赋值。CArray可替代前面特殊类型的Array。

列表

特殊非模板链表类元素
CObListCObject*
CPtrListvoid*
CStringListCString

MFC链表中的位置由抽象数值POSITION标识。
成员函数:
AddTail
AddHead
RemoveHead
RemoveTail
RemoveAll
GetNext//1
GetPrev // 2. 1,2接收链表表示当前位置POSITION,返回该位置处元素。同时令传入的POSITION变为Next或Prev。
GetHeadPosition
GetTailPosition
GetHead
GetTail
SetAt(POSITION nPos, T value)
RemoveAt(POSITION nPos)
InsertBefore(POSITION nPos, T value)
InsertAfter(POSITION nPos, T value)
FineIndex(int nIndex)// 返回nIndex对应处的POSITION
Find(T value, POSITION nStartPos)
GetCount
IsEmpty

用CList创建类型安全列表类
CList

BOOL AFXAPI CompareElements(const T* t1,const T* t2)
{
    // 相等返回true,不等返回false
}

映射表

特殊类型映射表说明
CMapWordToPtrWord–>Ptr
CMapPtrToWordPtr–>Word
CMapPtrToPtrPtr–>Ptr
CMapWordToObWord–>Ob*
CMapStringToObString–>Ob*
CMapStringToPtrString–>Ptr
CMapStringToStringString–>String

RemoveKey
RemoveAll
GetCount
IsEmpty
GetStartPosition// 1
GetNextAssoc// 2 .1,2结合可以完成枚举
InitHashTable// 指定散列表尺寸,应在未添加项目前调用
Lookup

CMapStringToString map;
...
POSITION nPos = map.GetStartPosition();
while(nPos)
{
    CString strKey, strValue;
    map.GetNextAssoc(nPos, strKey, strValue);
    ...
}

类型指针类

// 存在意义不明

类型指针说明
CTypedPtrArray管理指针数组
CTypedPtrList管理指针链接列表
CTypedPtrMap管理用指针做项目或关键字的Map
CTypedPtrList<CObList, CLine*> list;
for(int i = 0; i < 10; i++)
{
    int x = i * 10;
    CLine* pLine = new CLine(x, 0, x, 100);
    list.AddTail(pLine);
}

POSITION nPos = list.GetHeadPosition();
while(nPos)
{
    CLine* pLine = list.GetNext(nPos);
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

raindayinrain

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值