STL泛型编程-multimap多重映照容器

来源:互联网 发布:mac 给用户权限 编辑:程序博客网 时间:2024/04/29 23:32

multimap多重映照容器

    multimap与map基本相同,唯一不同的是multimap允许插入重复键值的元素。由于允许重复键值存在,multimap的元素插入,删除,查找都与map不同。

    要使用multimap,需要头文件"#include <map>"

  1. multimap对象创建、元素插入。(可以重复插入元素,插入元素需要使用insert()方法)
    #pragma warning(disable:4786)#include <map>#include <string>#include <iostream>using namespace std;int main(int argc,char* argv[]){    //定义map对象,当前没有任何元素    multimap<string,double> m;    m.insert(pair<string,double>("Jack",300.5));    m.insert(pair<string,double>("Kity",200));    m.insert(pair<string,double>("Memi",500));    //重复插入键值"Jack"    m.insert(pair<string,double>("Jack",306));    //前向遍历元素    multimap<string,double>::iterator it;    for(it=m.begin();it!=m.end();it++)        cout<<(*it).first<<" : "<<(*it).second<<endl;    return 0;}//运行结果://Jack : 300.5//Jack : 306//Kity : 200//Memi : 500

  2. 元素的删除(因为有重复的键值,所以删除操作将会将要删除的键值一次性从multimap中删除)
    #pragma warning(disable:4786)#include <map>#include <string>#include <iostream>using namespace std;int main(int argc,char* argv[]){    //定义map对象,当前没有任何元素    multimap<string,double> m;    m.insert(pair<string,double>("Jack",300.5));    m.insert(pair<string,double>("Kity",200));    m.insert(pair<string,double>("Memi",500));    //重复插入键值"Jack"    m.insert(pair<string,double>("Jack",306));    //前向遍历元素    multimap<string,double>::iterator it;    for(it=m.begin();it!=m.end();it++)        cout<<(*it).first<<" : "<<(*it).second<<endl;    //删除键值等于"Jack"的元素    m.erase("Jack");    cout<<"the elements after deleted:"<<endl;    for(it=m.begin();it!=m.end();it++)        cout<<(*it).first<<" : "<<(*it).second<<endl;    return 0;}/*运行结果:Jack : 300.5Jack : 306Kity : 200Memi : 500the elements after deleted:Kity : 200Memi :500*/

  3. 元素查找(由于存在重复键值,find()方法只返回重复键值中的第一个元素的迭代器位置,如果没有找到,返回end()迭代器位置)
0 0