#include<iostream>
#include<string>
#include<map>
using namespace std;
struct SelfType{
int number;
};
void map_find()
{
//map.lower_bound(keyElem);//傳回第一個key>=keyElem元素的疊代器
//map.upper_bound(keyElem);//傳回第一個key>keyElem元素的疊代器
//map.equal_range(keyElem);//傳回一個pair,
//pair.first為第一個key>=keyElem元素的疊代器
//pair.second為第一個key>keyElem元素的疊代器
map<int,string> mapStu;
//1、通過pair的方式插入對象
//mapStu.insert( pair<int,string>(3, "小張"));
//2、通過value_type的方式插入對象
mapStu.insert( map<int, string>::value_type(1, "小李") );
//3、通過數組的方式插入值
mapStu[2] = "小張";
mapStu[3] = "小劉";
mapStu[4] = "小趙";
mapStu[5] = "小王";
map<int,string>::iterator it_lower,it_upper;
it_lower=mapStu.lower_bound(3);
it_upper=mapStu.upper_bound(3);
cout<<it_lower->first<<","<<it_lower->second<<endl;
cout<<it_upper->first<<","<<it_upper->second<<endl;
pair<map<int,string>::iterator,map<int,string>::iterator> mapStuPair=mapStu.equal_range(5);
it_lower=mapStuPair.first;
it_upper=mapStuPair.second;
cout<<it_lower->first<<","<<it_lower->second<<endl;
if(it_upper !=mapStu.end())
{
cout<<it_upper->first<<","<<it_upper->second<<endl;
}
else
{
cout<<"it_upper ==mapStu.end()"<<endl;
}
/*
3,小劉
4,小趙
5,小王
it_upper ==mapStu.end()
請按任意鍵繼續. . .
*/
}
void map_greater()
{
map<int,string,greater<int>> mapStu;
//1、通過pair的方式插入對象
mapStu.insert( pair<int,string>(3, "小張"));
//2、通過value_type的方式插入對象
mapStu.insert( map<int, string>::value_type(1, "小李") );
//3、通過數組的方式插入值
mapStu[3] = "小劉";
mapStu[5] = "小王";
map<int,string,greater<int>>::iterator it;
for(it=mapStu.begin();it !=mapStu.end();++it)
{
cout<<it->first<<","<<it->second<<" ";
}
cout<<endl;
}
void main()
{
map_find();return;
map_greater();return;
map<int, char> mapA;
map<string, float> mapB;
//其中T1,T2還可以用各種指針類型或自定義類型
map<float, char> mapC;
map<int*, float> mapD;
map<SelfType, char> mapE;
map<int,string> mapStu;
//1、通過pair的方式插入對象
mapStu.insert( pair<int,string>(3, "小張"));
//2、通過value_type的方式插入對象
mapStu.insert( map<int, string>::value_type(1, "小李") );
//3、通過數組的方式插入值
mapStu[3] = "小劉";
mapStu[5] = "小王";
map<int,string>::iterator it;
for(it=mapStu.begin();it !=mapStu.end();++it)
{
cout<<it->first<<","<<it->second<<" ";
}
cout<<endl;
string strName = mapStu[2];//取操作
cout<<strName.length()<<endl;
//隻有當mapStu存在2這個鍵時才是正确的取操作,否則會自動插入一個執行個體,鍵為2,值為初始化值。
for(it=mapStu.begin();it !=mapStu.end();++it)
{
cout<<it->first<<","<<it->second<<" ";
}
cout<<endl;
}
#include <iostream>
#include <string>
#include <map>
using namespace std;
int main()
{
multimap<string,int> m_map;
string s("中國"),s1("美國");
m_map.insert(make_pair(s,50));
m_map.insert(make_pair(s,55));
m_map.insert(make_pair(s,60));
m_map.insert(make_pair(s1,30));
m_map.insert(make_pair(s1,20));
m_map.insert(make_pair(s1,10));
//方式1
int k;
multimap<string,int>::iterator m;
m = m_map.find(s);
for(k = 0;k != m_map.count(s);k++,m++)
cout<<m->first<<"--"<<m->second<<endl;
//方式2
multimap<string,int>::iterator beg,end;
beg = m_map.lower_bound(s1);
end = m_map.upper_bound(s1);
for(m = beg;m != end;m++)
cout<<m->first<<"--"<<m->second<<endl;
//方式3
beg = m_map.equal_range(s).first;
end = m_map.equal_range(s).second;
for(m = beg;m != end;m++)
cout<<m->first<<"--"<<m->second<<endl;
return 0;
}
/*
中國--50
中國--55
中國--60
美國--30
美國--20
美國--10
中國--50
中國--55
中國--60
請按任意鍵繼續. . .
*/