1、map类似与C#中的字典,存储键值对
2、map重载了[],所以可以直接使用索引器访问其值,索引器中是键。
3、map中的条目是iterator类型,iterator被定义为map容器中的条目类型。iterator实际是一个指针,可以++,–。
4、map.begin()返回第一个条目,map.end()返回最后一个条目的下一个条目。
5、map中存储条目的顺序是有序的,即存储的顺序和取出的顺序是一致的。
6、iterator.first返回当前条目的键,iterator.sencond返回当前条目的值。
#include <iostream>
#include <map>
typedef std::map<int ,std::string> MAP_INT_STRING;
void printMap(MAP_INT_STRING &myMap)
{
MAP_INT_STRING::iterator it;
for (it = myMap.begin() ; it != myMap.end(); ++it)
{
printf("%d = %s \n",it->first,it->second.c_str());
}
}
void main()
{
MAP_INT_STRING enumMap;
//map重载了[]
enumMap[-1] = "one";
enumMap[1] = "two";
enumMap[1] = "two edit";//修改map中的条目
enumMap[2] = "three";
enumMap[3] = "four";
enumMap[4] = "five";
enumMap[5] = "six";
//enumMap.insert(make_pair(2,"three"));
//enumMap.insert(std::pair<int,std::string>(6, "hello"));
std::cout<<"map中记录个数:"<<enumMap.size()<<std::endl;
//map中的条目数据是顺序存储的,被称作为一个sequence。
//在这里需要提到的是begin()和end()两个成员,分别代表map对象中第一个条目和最后一个条目,这两个数据的类型是iterator,iterator被定义为map中条目的类型
MAP_INT_STRING::iterator it1 = enumMap.begin();
MAP_INT_STRING::iterator it2 = enumMap.end() ;
it2--;//其中enumMap.end()指向的是最后一个条目的下一个条目。
printf("enumMap.begin():%d == %s \n",it1->first,it1->second.c_str());
printf(" enumMap.end():%d == %s \n",it2->first,it2->second.c_str());
printf("===============查========================\n");
//find(),map是有顺序存储数据的
int nFindKey = 1 ;
MAP_INT_STRING::iterator it;//条目类型变量,实际上是一个条目指针
it=enumMap.find(nFindKey);
if(it==enumMap.end())//enumMap.end()表示map中的最后一个条目
{
std::cout<<"no find it"<<std::endl;
}
else
{
//std::cout不能输出std::string类型
printf("find it : %d == %s\n",it->first,it->second.c_str());
}
printMap(enumMap);
printf("===============删========================\n");
//删除
enumMap.erase(1);//删除 key=1 的条目
//enumMap.erase(it);
//enumMap.erase(enumMap.find(1),enumMap.find(4));//包括第一个,不包括最后一个 [begin,end)
//enumMap.erase(enumMap.begin(),enumMap.end());//删除所有 <=> enumMap.clear();
printMap(enumMap);
std::cout<<"map中记录个数:"<<enumMap.size()<<std::endl;
system("pause");
}