C++ Multimaps和maps很相似,但是MultiMaps允许重复的元素。(具体用法请参考map容器)
    函数列表:
    begin() 返回指向第一个元素的迭代器 
    clear() 删除所有元素 
    count() 返回一个元素出现的次数 
    empty() 如果multimap为空则返回真 
    end() 返回一个指向multimap末尾的迭代器 
    equal_range() 返回指向元素的key为指定值的迭代器对 
    erase() 删除元素 
    find() 查找元素 
    get_allocator() 返回multimap的配置器 
    insert() 插入元素 
    key_comp() 返回比较key的函数 
    lower_bound() 返回键值>=给定元素的第一个位置 
    max_size() 返回可以容纳的最大元素个数 
    rbegin() 返回一个指向mulitmap尾部的逆向迭代器 
    rend() 返回一个指向multimap头部的逆向迭代器 
    size() 返回multimap中元素的个数 
    swap() 交换两个multimaps 
    upper_bound() 返回键值>给定元素的第一个位置 
    value_comp() 返回比较元素value的函数
    
    ////////////////////////////////////////////////////////////////////////////////////
    构造函数
    explicit multimap(const Pred& comp = Pred(), const A& al = A());
    multimap(const multimap& x);
    multimap(const value_type *first, const value_type *last,
    const Pred& comp = Pred(), const A& al = A());
    
    begin 
    语法: 
      iterator begin();
    begin()函数返回一个迭代器,指向multimap的第一个元素。
    clear 
    语法: 
      void clear();
    clear()函数删除multimap中的所有元素。
    count 
    语法: 
      size_type count( const key_type &key );
    count()函数返回multimap中键值等于key的元素的个数。
    empty 
    语法: 
      bool empty();
    empty()函数返回真(true)如果multimap为空,否则返回假(false)。
    end 
    语法: 
      iterator end();
    end()函数返回一个迭代器,指向multimap的尾部。
    equal_range 
    语法: 
      pair equal_range( const key_type &key );
    equal_range()函数查找multimap中键值等于key的所有元素,返回指示范围的两个迭代器。
    erase 
    语法: 
      void erase( iterator pos );
      void erase( iterator start, iterator end );
      size_type erase( const key_type &key );
    erase()函数删除在pos位置的元素,或者删除在start和end之间的元素,或者删除那些值为key的所有元素。
    find 
    语法: 
      iterator find( const key_type &key );
    find()函数返回一个迭代器指向键值为key的元素,如果没找到就返回指向multimap尾部的迭代器。
    get_allocator 
    语法: 
      allocator_type get_allocator();
    get_allocator()函数返回multimap的配置器。
    insert 
    语法: 
      iterator insert( iterator pos, const TYPE &val );
      void insert( input_iterator start, input_iterator end );
      pair insert( const TYPE &val );
    insert()函数:
    
    插入val到pos的后面,然后返回一个指向这个元素的迭代器。 
    插入start到end的元素到multimap中。 
    只有在val不存在时插入val。返回值是一个指向被插入元素的迭代器和一个描述是否插入的bool值。 
    key_comp 
    语法: 
      key_compare key_comp();
    key_comp()函数返回一个比较key的函数。
    lower_bound 
    语法: 
      iterator lower_bound( const key_type &key );
    lower_bound()函数返回一个迭代器,指向multimap中键值>=key的第一个元素。
    max_size 
    语法: 
      size_type max_size();
    max_size()函数返回multimap能够保存的最大元素个数。
    rbegin 
    语法: 
      reverse_iterator rbegin();
    rbegin()函数返回一个指向multimap尾部的逆向迭代器。
    rend 
    语法: 
      reverse_iterator rend();
    rend()函数返回一个指向multimap头部的逆向迭代器。
    size 
    语法: 
      size_type size();
    size()函数返回multimap中保存的元素个数。
    swap 
    语法: 
      void swap( multimap &obj );
    swap()交换obj和现mulitmap中的元素。
    upper_bound 
    语法: 
      iterator upper_bound( const key_type &key );
    upper_bound()函数返回一个迭代器,指向multimap中键值>key的第一个元素。
    value_comp 
    语法: 
      value_compare value_comp();
    value_comp()函数返回一个比较元素value的函数。
    示例:
    #include <iostream>
    #include <map>
    #include <string>
    using namespace std;
    void main()
    {
       multimap <string ,int> m;//multimap的创建
       m.insert(pair<string,int>("Jack",1));//插入
       m.insert(pair<string,int>("Jack",2));
       m.insert(pair<string,int>("Body",1));
       m.insert(pair<string,int>("Navy",4));
       m.insert(pair<string,int>("Demo",3));
     
       multimap<string,int>::iterator iter;
       for (iter = m.begin();iter != m.end();++iter)//遍历
       {
    cout<<(*iter).first<<"  "<<(*iter).second<<endl;
       }
       m.erase("Navy");//multimap的删除
       cout<<"The element after delete:"<<endl;
       for (iter = m.begin();iter != m.end();++iter)
       {
    cout<<(*iter).first<<"  "<<(*iter).second<<endl;
       }
       //multimap元素的查找 
       multimap<string,int>::iterator it;
       int num=m.count("Jack");
       it = m.find("Jack");
       cout<<"the search result is :"<<endl;
       for(int i=1;i<=num;i++)
       {
      cout<<(*it).first<<"  "<<(*it).second<<endl;
       it++;
       }
       if(i==1){ cout<<"can not find!"<<endl; }
    }
    输出结果:
    Body  1
    Demo  3
    Jack  1
    Jack  2
    Navy  4
    The element after delete:
    Body  1
    Demo  3
    Jack  1
    Jack  2
    the search result is :
    Jack  1
    Jack  2

标准模板库(STL)学习探究之Multimap容器的更多相关文章

  1. 标准模板库(STL)学习探究之vector容器

    标准模板库(STL)学习探究之vector容器  C++ Vectors vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库.vector之所以被 ...

  2. 标准模板库(STL)学习探究之stack

    标准模板库(STL)学习探究之stack queue priority_queue list map/multimap dequeue string

  3. 标准模板库(STL)学习指南之sort排序

    对于程序员来说,数据结构是必修的一门课.从查找到排序,从链表到二叉树,几乎所有的算法和原理都需要理解,理解不了也要死记硬背下来.幸运的是这些理论都已经比较成熟,算法也基本固定下来,不需要你再去花费心思 ...

  4. 标准模板库(STL)学习指南之List链表

    本文转载自天极网,原文地址:http://www.yesky.com/255/1910755.shtml.转载请注明 什么是STL呢?STL就是Standard Template Library,标准 ...

  5. 标准模板库(STL)学习指南之set集合

    set是关联容器.其键值就是实值,实值就是键值,不可以有重复,所以我们不能通过set的迭代器来改变set的元素的值,set拥有和list相同的特性:当对他进行插入和删除操作的时候,操作之前的迭代器依然 ...

  6. 标准模板库(STL)学习指南之priority_queue优先队列

    转载自CSDN博客:http://blog.csdn.net/suwei19870312/article/details/5294016 priority_queue 调用 STL里面的 make_h ...

  7. 标准模板库(STL)学习指南之map映射

    转载自CSDN博客:http://blog.csdn.net/bat603/article/details/1456141 Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关 ...

  8. 标准模板库(STL)学习指南之vector向量

    vector – 一.  vector可以模拟动态数组 – 二.  vector的元素可以是任意类型T,但必须具备赋值和拷贝能力(具有public 拷贝构造函数和重载的赋值操作符) 三.必须包含的头文 ...

  9. STL学习系列之一——标准模板库STL介绍

    库是一系列程序组件的集合,他们可以在不同的程序中重复使用.C++语言按照传统的习惯,提供了由各种各样的函数组成的库,用于完成诸如输入/输出.数学计算等功能. 1. STL介绍 标准模板库STL是当今每 ...

随机推荐

  1. rafy使用笔记

    1.rafy里实体字段string类型映射成数据库varchar(2000). 解决:“DomainApp“下“OnRuntimeStarting“方法里添加“DbMigrationSettings. ...

  2. C++中逻辑操作符的重载分析

    1,逻辑运算符的原生语义: 1,操作数只有两种值(true 和 false): 1,C 语言中只有非 0 和 0: 2,逻辑表达式不用完全计算就能确定最终值: 1,短路规则: 3,最终结果只能是 tr ...

  3. springCloud的使用04-----熔断器hystrix的使用

    1. restTemplate+ribbon使用hystrix 1.1 引入依赖 <!-- 配置hystrix断路器 --> <dependency> <groupId& ...

  4. React-Native基础-安卓篇(二)

    前言:这一篇随笔将记录我在React-Native官网文档上学习的基础知识

  5. 【知识强化】第六章 应用层 6.3 文件传输协议FTP

    这节课我们来学习一下文件传输协议FTP. 我们知道一个文件的传输过程呢一定需要协议的规定,那在文件传送协议这一块呢有很多个协议.比较主要的两个一个是文件传送协议FTP,一个是简单文件传送协议TFTP. ...

  6. WaitForSingleObject的作用[转]

    在多线程的情况下,有时候我们会希望等待某一线程完成了再继续做其他事情(比如主线程等待子线程结束完之后,自己再结束),要实现这个目的,可以使用Windows API函数WaitForSingleObje ...

  7. Linux中的系统服务_01

    Linux中的系统服务_01 1.linux中所有的内容都是以文件的形式存在,所以其服务也是以文件的形式存在/etc/init.d目中, 2.存在改/etc/init.d/目录里的文件,都可以通过命令 ...

  8. nucleus 学习 中断

    ;************************************************************************ ;* ;* FUNCTION ;* ;* INT_I ...

  9. 3D打印切片软件Cura及CuraEngine原理分析

    引言 年初开始进入3D打印行业,受命以Cura为基础,研发一款自主的3D打印切片软件. 自主研发要取其长处,补其不足,首先自然是要搞清楚Cura到底做了什么,读Cura的代码是必需的.我一向都觉得比起 ...

  10. vue2 的 过渡(动画)效果

    1.在过渡 效果的使用中 ,key属性需要注意 : 有相同父元素的子元素必须有独特的 key.重复的 key 会造成渲染错误.       参考官方说明:  https://cn.vuejs.org/ ...