天天看點

map_multimap

#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
請按任意鍵繼續. . .
*/