STL-------map与multimap
map(映射) \ multimap(多映射)
红黑树(数据结构 )
基本操作
insert: 4种方法
count和find
erase:3重方法
***注意:不能通过find进行修改!
#include <iostream>
#include <map>
#include <string>
using namespace std;
int main( int argc, char** argv )
{
map<int, string> m;
map<string,int> mapGrade;
multimap<int, string> mMap;
// key value
m.insert( map<int,string>::value_type(1, "One"));
m.insert(map<int,string>::value_type(2, "Two"));
m.insert(map<int,string>::value_type(3, "Three"));
//m.insert(make_pair(1,"One"));
//m.insert(make_pair(2,"Two"));
//m.insert(make_pair(3,"Three"));
m.insert(make_pair(-1,"Minus One"));
m.insert(pair<int,string>(1000,"One Thousand"));
m[1000000] = "One Million";
cout<<"map find:"<<endl;
cout<<m[3]<<endl;
cout<<"map total:"<<m.size()<<endl;
mapGrade.insert(make_pair("zhang", 99));
mapGrade.insert(map<string,int>::value_type("yang", 99));
mapGrade.insert(pair<string,int>("hua", 100));
mapGrade["sss"] = 1000;
map<int,string>::const_iterator citr;
for( citr = m.begin(); citr != m.end(); ++citr)
{
cout<<"key:"<<citr->first;
cout<<" value:"<<citr->second<<endl;
}
mMap.insert(multimap<int,string>::value_type(1, "One"));
mMap.insert(multimap<int,string>::value_type(2, "Two"));
mMap.insert(make_pair(-1, "minus One"));
mMap.insert(pair<int,string>(1000, "One Thousand"));
mMap.insert(pair<int,string>(1000, "One2 Thousand"));
cout<<"multimap size:"<<mMap.size()<<endl;
multimap<int,string>::const_iterator itr;
for( itr=mMap.begin(); itr!=mMap.end(); ++itr )
{
cout<<"key:"<<itr->first;
cout<<" value:"<<itr->second<<endl;
}
cout<<"multimap has"<<mMap.count(1000)<<" 1000"<<endl;
multimap<int,string>::const_iterator itrFind;
itrFind = mMap.find(1000);
if( mMap.end() != itrFind )
{
size_t n = mMap.count(1000);
for(size_t i=0; i<n; ++i)
{
cout<<"find"<<" "<<itrFind->first<<itrFind->second<<endl;
++itrFind;
}
}else{
cout<<"not find"<<endl;
}
//delete
if(mMap.erase(-1)>0)
cout<<"delete -1 success"<<endl;
//delete2
multimap<int,string>::iterator itrDelete;
itrDelete = mMap.find(2);
if( itrDelete != mMap.end() )
{
mMap.erase(itrDelete);
cout<<"delete 2 success"<<endl;
}
//delete3
mMap.erase(mMap.lower_bound(1000),mMap.upper_bound(1000));
return 0;
}

浙公网安备 33010602011771号