typedef pair<string,Student>pair_t;
int main()
{
map<string,Student> mapstu;
mapstu.insert(pair_t("2",Student("delaiwen",23)));
mapstu.insert(pair_t("1",Student("liqin",24)));
mapstu.insert(pair_t("5",Student("sabo",21)));
// 插入
// pair<map<string,Student>::iterator,bool> pr = mapstu.insert(pair_t("3",Student("lanbo",36)));
// if(pr.second) //pr.first->first key
// { //pr.first->second value
// cout<<"insert ok"<<endl;
// pr.first->second.showStu();
// }
// else
// cout<<"inset error"<<endl;
map<string,Student>::iterator it=mapstu.begin();
// for(;it!=mapstu.end();it++)
// it->second.showStu();
// mapstu["6"] = Student("hanbin",20);//插入,如果key不存在则会插入
// mapstu["5"] = Student("hanbin",20);//如果key存在就会改值
// 获取(查看值)
// mapstu.at("1").showStu();
// mapstu.at("1") = Student("longxia",24);//1.
// mapstu["1"].showStu();
// mapstu["1"] = Student("longxia",24); //2.
// map<string,Student>::iterator it=mapstu.begin(); //3.
// cout<<"key"<<" "<<it->first<<" "<<"value"<<" ";
// it->second.showStu();
// it->second = Student("longxia",22);
// it = mapstu.find("5"); //4.通过find查找key 返回值是迭代子
// if(it!=mapstu.end())
// { cout<<"find"<<endl;
// it->second.showStu();
// }
// else
// cout<<"not find"<<endl;
//5.如果要通过value查找需要自己写算法
//删除
// mapstu.erase("1");
// mapstu.erase(++mapstu.begin(),--mapstu.end());
// mapstu.erase(it);
//边界值
// it=mapstu.upper_bound("2");
// if(it!=mapstu.end())
// {
// cout<<"find "<<"key = "<<it->first<<" value=";
// it->second.showStu();
// }
// it=mapstu.lower_bound("2");
// if(it!=mapstu.end())
// {
// cout<<"find "<<"key = "<<it->first<<" value=";
// it->second.showStu();
// }
// 双边界查找
// pair<map<string,Student>::iterator ,map<string,Student>::iterator> pr= mapstu.equal_range("2");
// if(pr.first!=mapstu.end())
// {
// cout<<"find lower_bound"<<" key ="<<pr.first->first<<" value= ";
// pr.first->second.showStu();
// }
// else
// cout<<"not find"<<endl;
// if(pr.second!=mapstu.end())
// {
// cout<<"find upper_bound"<<" key ="<<pr.second->first<<" value= ";
// pr.second->second.showStu();
// }
// else
// cout<<"not find"<<endl;
// for_each(mapstu.begin(),mapstu.end(),showmap);
}
#if 0
map的容器特性
1.一次存两个数据key和value,以pair的形式存在,key和value一一对应,通过key来操作value
2.有序容器,对key进行排序
3.不允许key重复,允许value重复
4.增效率低,查询效率高
#endif