1、类型定义
工具类型
typedef enum _ENUM_TOOL_TYPE
{
_emNoneType,
_emMatch_GrayMatch,
}
//存储数据类型
typedef struct _st_Tool_Prop
{
enumToolType emToolType;
CDialogEx* m_pDlgTool;
CDialogEx* m_pDlgToolParam;
int m_iCameraId;
_st_Tool_Prop()//初始化
{
emToolType = _emNoneType;
m_pDlgTool = NULL;
m_pDlgToolParam = NULL;
m_iCameraId = 0;
}
}
typedef std::map<int,stToolProp> MapToolList; //工具列表
typedef std::map<int,stToolProp>::iterator MapToolIter; //工具列表迭代器
通过map对象的方法获取的iterator数据类型是一个std::pair对象,包括两个数据。
iterator->first 关键字(key)
iterator->second 存储的数据(value)
MapToolIter it;
访问关键字:it->first
访问数据成员:it->second.emToolType
2、插入数据单元
int num;
stToolProp* pStToolProp;
MapToolList m_MapToolList;
m_MapToolList.insert(std::pair<int,stToolProp>(num+1,*pStToolProp));
插入关键字必须是唯一的,插入关键字相同关键字是无效的,也就是说num+1要不同已经存在的关键字。
关键字可以不是连续的。
3、数据查询
int num = m_MapToolList.size();
for(MapToolIter it = m_MapToolList.begin();it != m_MapToolList.end(); ++it)
m_MapToolList.begin()第一个节点的指针
m_MapToolList.end()注意这不是最后一个节点的指针,而是最后一个节点再往后的无效指针,
要获取最后一个节点的指针需要it--
4、存储数据获取
MapToolIter it ->second.emToolType;
5、数据删除
MapToolList m_MapToolList.erase(iter);//迭代器删除
MapToolList m_MapToolList.erase(key);//关键字删除