#首先包含头文件:
#include <map>
using namespacestd;//需要使用该命名空间
#然后定义对象:
map<int,CString>m_student;//int为学号,CString为姓名
map中包含两个值,即<key,value>。key是指关键字,用于索引;value是指所求的值。
其中,key是唯一的,在同一个map对象中不可能出现两个key值相同的记录
#向对象中添加数据:
m_student[0711712034] = 化石鱼;
注意map对象是不需要事先分配空间的。直接用m_student[key] =value的形式即可为map对象添加一条索引记录。
注意若不给定初值,则会使用默认初值为map对象赋值。因此查找需要使用count()或find(),而不要使用[]来查找。例如要查找一个学号为1234567890的学生姓名,但map中并没有该学号,如果直接使用CStringname = m_student[1234567890],会使用默认初值NULL作为学号1234567890的对应值,并将(1234567890,NULL)作为一条新纪录添加进来。
#然后可以像数组一样使用该对象的数据:
CString name = m_student[0711712034];
#获取第一个元素:(序列允许为空。若序列为空,则指向序列末端的下一个位置)。注意这里返回的并非是value,而是一个iterator。
m_student.begin();
#获取最后一个元素:(序列不允许为空)。注意这里返回的并非是value,而是一个iterator。
m_student.back();
#获取最后一个元素的下一个位置:(序列是否为空无影响)。注意这里返回的并非是value,而是一个iterator。
m_student.end();
#判断序列是否为空:
m_student.empty();//若为空返回true,否则返回false
#判断某个关键字是否存在:
m_student.count(key);//若存在返回1,若不存在返回0
返回值只可能是0或1。因为key是唯一的。所以key要么存在要么不存在,不可能存在多个。
#查找某个关键字:
m_student.find(key);
返回值为迭代器iterator。若没有查找到,则返回m_student.end()。
#删除某个对象:
m_student.eraser(key);//通过关键字删除
m_student.eraser(iterator);//通过迭代器删除
如:
m_student.eraser(0711712000);
m_student.eraser(m_student.begin());
m_student.eraser(m_student.find(0711712000));
#最后在析构函数中清空map对象:
ConvexShell::~ConvexShell(void)
{
m_student.clear();
}