C++容器map的基本操作和使用

来源:互联网 发布:儿童防沉迷软件 ipad 编辑:程序博客网 时间:2024/05/16 17:57

          Map是c++的一个标准容器,它提供了很好的一对一的关系,在一些程序中建立一个map可以起到事半功倍的效果,下面是总结的一些map基本简单实用的操作:

(1)map最基本的构造函数;
                   map<string,int>mapstring;

                   map<int,string>mapint;

                   map<sring,char>mapstring;

                   map<char,string>mapchar;

                   map<char,int>mapchar;

                   map<int,char>mapint;


(2)map添加数据;
                   map<int,string>maplive;

                   maplive.insert(pair<int,string(102,"aclive"));

                   maplive.insert(map<int,string>::value_type(321,"hai"));

                   maplive[112]="April";     //map中最简单最常用的插入添加!


(3)map中元素的查找:

                   find()函数返回一个迭代器指向键值为key的元素,如果没找到就返回指向map尾部的迭代器。

                   map<int,string>::iteratorl_it;

                   l_it=maplive.find(112);

                   if(l_it==maplive.end())

                        cout<<"wedonotfind112"<<endl;

                  else

                        cout<<"wofind112"<<endl;


(4)map中元素的删除:
                 如果删除112;
                 map<int,string>::iteratorl_it;

                 l_it=maplive.find(112);

                if(l_it==maplive.end())
                     cout<<"wedonotfind112"<<endl;
                else
                     maplive.erase(l_it);      //delete112;、


(5)map中swap的用法:
              Map中的swap不是一个容器中的元素交换,而是两个容器交换;

         如下代码:

intmain(){            map<int,int>m1,m2,m3;      map<int,int>::iteratorm1_Iter;      m1.insert(pair<int,int>(1,10));      m1.insert(pair<int,int>(2,20));      m1.insert(pair<int,int>(3,30));      m2.insert(pair<int,int>(10,100));      m2.insert(pair<int,int>(20,200));      m3.insert(pair<int,int>(30,300));            cout<<"Theoriginalmapm1is:";            for(m1_Iter=m1.begin();m1_Iter!=m1.end();m1_Iter++)      {          cout<<""<<m1_Iter->second;          cout<<"."<<endl;        }                     m1.swap(m2);      cout<<"Afterswappingwithm2,mapm1is:";             for(m1_Iter=m1.begin();m1_Iter!=m1.end();m1_Iter++)      {           cout<<""<<m1_Iter->second;           cout<<"."<<endl;       }                  cout<<"Afterswappingwithm2,mapm2is:";            for(m1_Iter=m2.begin();m1_Iter!=m2.end();m1_Iter++)      {            cout<<""<<m1_Iter->second;            cout<<"."<<endl;      }             swap(m1,m3);             cout<<"Afterswappingwithm3,mapm1is:";      for(m1_Iter=m1.begin();m1_Iter!=m1.end();m1_Iter++)      {             cout<<""<<m1_Iter->second;             cout<<"."<<endl;      }}

(6)map的sort问题:
        Map中的元素是自动按key升序排序,所以不能对map用sort函数:

      如下代码:

#include<map>#include<iostream>using namespace std;intmain(){            map<int,int>m1;                       map<int,int>::iteratorm1_Iter;            m1.insert(pair<int,int>(1,20));            m1.insert(pair<int,int>(4,40));            m1.insert(pair<int,int>(3,60));            m1.insert(pair<int,int>(2,50));            m1.insert(pair<int,int>(6,40));            m1.insert(pair<int,int>(7,30));                        cout<<"Theoriginalmapm1is:"<<endl;            for(m1_Iter=m1.begin();m1_Iter!=m1.end();m1_Iter++)                                  cout<<m1_Iter->first<<""<<m1_Iter->second<<endl;}

最后的结果为:

Theoriginalmapm1is:

1    20

2    50

3    60

4    40

6    40

7    30


(7)map的基本操作函数:
         C++Maps是一种关联式容器,包含“关键字/值”对

         begin()                           返回指向map头部的迭代器

         clear()                            删除所有元素

         count()                           返回指定元素出现的次数empty()如果map为空则返回trueend()返回指向map末尾迭代器

         equal_range()                返回特殊条目的迭代器对

         erase()                           删除一个元素

         find()                              查找一个元素

         get_allocator()               返回map的配置器

         insert()                           插入元素

         key_comp()                   返回比较元素key的函数

         lower_bound()               返回键值>=给定元素的第一个位置

         max_size()                     返回可以容纳的最大元素个数

         rbegin()                          返回一个指向map尾部的逆向迭代器

         rend()                             返回一个指向map头部的逆向迭代器

         size()                              返回map中元素的个数

         swap()                            交换两个map

         upper_bound()               返回键值>给定元素的第一个位置

         value_comp()                 返回比较元素value的函数

0 0