std map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道。这里说下std map内部数据的组织,std map内部自建一颗红黑树(一种非严格意义上的平衡二叉树),这颗树具有对数据自动排序的功能,所以在std map内部所有的数据都是有序的
#include <map>
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <string>
#include <algorithm>
#define file_r(x) freopen(x,"r",stdin);
#define file_w(x) freopen(x,"w",stdout);
using namespace std;
int main()
{
//file_r("in.data");
//file_w("out.data");
map<string,string> data;
int ncase, n;
scanf("%d",&ncase);
string order,number,name;
map<string, string>::iterator it;
while(ncase--)
{
scanf("%d",&n);
fflush(stdin);
while(n--)
{
cin>>order;
if(!order.compare("INSERT"))
{
cin>>number>>name;
data.insert(pair<string,string>(number,name));
}
else if(!order.compare("SELETE"))
{
cin>>number;
it = data.find(number);
if(it!=data.end())
{
cout<<it->first<<' '<<it->second<<endl;
}
else printf("NO DATA!\n");
}
else if(!order.compare("DELETE"))
{
cin>>number;
it = data.find(number);
if(it!=data.end())
{
data.erase(it);
}
else printf("NO DATA!\n");
}
else if(!order.compare("UPDATA"))
{
cin>>number>>name;
it = data.find(number);
if(it!=data.end())
{
it->second =name;
}
else printf("NO DATA\n");
}
}
for(it=data.begin(); it!=data.end(); it++)
cout<<it->first<<' '<<it->second<<endl;
data.clear();
printf("\n");
}
system("pause");
return 0;
}