zoukankan      html  css  js  c++  java
  • 标准模板库(STL)学习探究之Multimap容器

        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

  • 相关阅读:
    [Xcode 实际操作]六、媒体与动画-(17)使用MediaPlayer框架播放视频
    [Xcode 实际操作]六、媒体与动画-(16)实现音乐的背景播放
    [Xcode 实际操作]六、媒体与动画-(15)使用AudioPlayer播放音乐
    [Xcode 实际操作]六、媒体与动画-(14)使用SystemSoundId播放简短声音
    [Xcode 实际操作]六、媒体与动画-(13)使用UIImageView制作帧动画
    [Swift]LeetCode148. 排序链表 | Sort List
    [Swift]LeetCode147. 对链表进行插入排序 | Insertion Sort List
    [Swift]LeetCode146. LRU缓存机制 | LRU Cache
    【POJ3615】Cow Hurdles 最短路,你若LCA,我仍不拦你。
    How MapReduce Works
  • 原文地址:https://www.cnblogs.com/fallenmoon/p/6744513.html
Copyright © 2011-2022 走看看