①容器CArray——数组
template <class TYPE, class ARG_TYPE = const TYPE&>
class CArray : public CObject
// Arrays
class CByteArray; // 支持字节的动态数组。
class CWordArray; // 支持 16 位数组。
class CDWordArray; // 支持 32 位双字数组。
class CUIntArray; // 支持无符号整数数组。
class CPtrArray; // 支持 void 指针数组。
class CObArray; // 支持 CObject 指针数组。
方法 | 说明 |
CArray::Add | 向数组的末尾添加一个元素;根据需要扩展该数组。 |
CArray::Append | 将另一个数组追加到数组;如有必要,增大数组 |
CArray::Copy | 将另一个数组复制到该数组;根据需要扩展该数组。 |
CArray::ElementAt | 在该数组中返回对元素指针的临时引用。 |
CArray::FreeExtra | 若高于当前的上限,则将释放所有未使用的内存。 |
CArray::GetAt | 返回给定索引位置处的值。 |
CArray::GetCount | 获取此数组中的元素数。 |
CArray::GetData | 允许访问该数组中的元素。 可以为 NULL 。 |
CArray::GetSize | 获取此数组中的元素数。 |
CArray::GetUpperBound | 返回最大的有效索引。 |
CArray::InsertAt | 在指定索引处插入一个元素(或另一个数组中的所有元素)。 |
CArray::IsEmpty | 确定数组是否为空。 |
CArray::RemoveAll | 从此数组中移除所有元素。 |
CArray::RemoveAt | 移除特定索引处的元素。 |
CArray::SetAt | 设置给定索引的值;不允许对该数组进行扩展。 |
CArray::SetAtGrow | 设置给定索引的值;根据需要扩展该数组。 |
CArray::SetSize | 设置要在该数组中包含的元素数。 |
具体函数使用:CArray 类 | Microsoft Docs
②容器CList——有序列表
template<class TYPE, class ARG_TYPE = const TYPE&>
class CList : public CObject
// Lists
class CPtrList; // 支持 void 指针列表。
class CObList; // 支持 CObject 按顺序或指针值访问的不唯一指针的有序列表。
方法 | 说明 |
CList::AddHead | 将元素 (列表或另一个列表中) 元素添加到列表的 (,以) 。 |
CList::AddTail | 将一个元素 (列表或另一个列表中) 元素添加到列表尾部, (创建一个新的) 。 |
CList::Find | 获取指针值指定的元素的位置。 |
CList::FindIndex | 获取由从零开始索引指定的元素的位置。 |
CList::GetAt | 获取位于给定位置的元素。 |
CList::GetCount | 返回此列表中的元素数。 |
CList::GetHead | 返回列表的 head 元素 (不能为空) 。 |
CList::GetHeadPosition | 返回列表的头元素的位置。 |
CList::GetNext | 获取用于进行轮次的下一个元素。 |
CList::GetPrev | 获取上一个用于进行复用的元素。 |
CList::GetSize | 返回此列表中的元素数。 |
CList::GetTail | 返回列表的 tail 元素 (不能为空) 。 |
CList::GetTailPosition | 返回列表的结尾元素的位置。 |
CList::InsertAfter | 在给定位置后插入新元素。 |
CList::InsertBefore | 在给定位置之前插入新元素。 |
CList::IsEmpty | 测试空列表条件 (元素) 。 |
CList::RemoveAll | 从此列表中移除所有元素。 |
CList::RemoveAt | 从此列表中移除按位置指定的元素。 |
CList::RemoveHead | 从列表的头部移除 元素。 |
CList::RemoveTail | 从列表的结尾移除 元素。 |
CList::SetAt | 设置给定位置的元素。 |
具体函数使用:CList 类 | Microsoft Docs
③容器CMap——映射、字典
template<class KEY, class ARG_KEY, class VALUE, class ARG_VALUE>
class CMap : public CObject
// Maps (aka Dictionaries)
class CMapWordToOb; // 支持 16 位键控的 CObject 指针的映射。
class CMapWordToPtr; // 支持 16 位键控的 void 指针的映射。
class CMapPtrToWord; // 支持 void 指针键控的 16 位的映射。
class CMapPtrToPtr; // 支持 void 指针键控的 void 指针的映射。
方法 | 说明 |
CMap::GetCount | 返回此映射中的元素数。 |
CMap::GetHashTableSize | 返回哈希表中的元素数。 |
CMap::GetNextAssoc | 获取用于循环访问的下一个元素。 |
CMap::GetSize | 返回此映射中的元素数。 |
CMap::GetStartPosition | 返回第一个元素的位置。 |
CMap::InitHashTable | 初始化哈希表并指定其大小。 |
CMap::IsEmpty | 测试空映射条件 (不) 任何元素。 |
CMap::Lookup | 查找映射到给定键的值。 |
CMap::PGetFirstAssoc | 返回指向第一个元素的指针。 |
CMap::PGetNextAssoc | 获取指向要循环访问的下一个元素的指针。 |
CMap::PLookup | 返回一个指向其值与指定值匹配的键的指针。 |
CMap::RemoveAll | 从此映射中移除所有元素。 |
CMap::RemoveKey | 移除由键指定的元素。 |
CMap::SetAt | 将元素插入到映射中;如果找到匹配的键,则替换现有元素。 |
具体函数使用:CMap 类 | Microsoft Docs
特殊的类:
// Special String variants
class CStringArray; // 支持 CString 对象数组。
class CStringList; // 支持 CString 对象列表。
class CMapStringToPtr; // 支持 CString 对象键控的 void 指针的映射。
class CMapStringToOb; // 将唯一 CString 对象映射到 CObject 指针的字典集合类。
class CMapStringToString; // 支持 CString 对象键控的 CString 对象的映射。
//
template<typename BaseType, class StringTraits>
class CStringT :public CSimpleStringT<BaseType,
_CSTRING_IMPL_::_MFCDLLTraitsCheck<BaseType, StringTraits>::c_bIsMFCDLLTraits>
STL中与之对应的三个类
#include <vector>
#include <list>
#include <map>
#include <iostream>
注意:在使用对应的容器时,需要添加对应的容器头文件和#include<iostream>
template <class Type, class Allocator = allocator<Type>>
class vector
template <class Type, class Allocator= allocator<Type>>
class list
template <class Key,
class Type,
class Traits = less<Key>,
class Allocator=allocator<pair <const Key, Type>>>
class map;
STL库中的容器与MFC中对应的容器使用相似。