Map

来源:互联网 发布:ubuntu的root默认密码 编辑:程序博客网 时间:2024/04/30 09:34

    map映照容器的元素数据是由一个键值和一个映射数据组成的,她是关联容器,键值与映射数据之间是一对一的关系。map本身是有顺序的,默认她按键值由小到大进行排列。map映射容器的数据机构是采用红黑树来实现的,插入元素的键值不能重复。使用map容器需要头文件包含语句“#include <map>。

 

1. map的构造函数;

   map<key, value> myMap;

   map<key, value> myMap(myMap2); // 获取myMap2的副本

   map<key, value> myMap(begin, end); // begin和end是迭代器

   例如:

   map<string, int> myMap1;

   map<string, int> myMap2(myMap1);

   map<string, int> myMap3(myMap1.begin(), myMap1.end());

           注:由于map<string, in>类型书写较长,我们可以这样定义, typedef map<string, int> MY_MAP;

 

2. map添加元素:

  map<string, int> myMap;  
   1. myMap.insert(pair<string, int>("My map 1", 1));
   2. myMap.insert(map<string, int>::value_type("My map 2", 2));
   3. myMap[My map 3] = 3;

   检查插入元素是否成功:

   pair<map<string, int>::iterator, bool> ret = myMap.insert(pair<string, int>("("My map 1", 1));如

   果插入成功bool值返回true,否则返回false。

3. map中元素的查找:

   使用find()方法来搜索某个键值,如果搜索到了,则返回该键值所在的迭代位置,否则返回end()迭代位置。

   代码示例:

   map<string, int>::iter = myMap.find("My map 1");

   if(iter != myMap.end())

   {

      cout<<"find the key!"<<endl;

   }
4. map中元素的删除:
   erase()函数可以删除某个迭代器位置上的元素、等于某个键值的元素。

   代码示例:

   myMap.erase("My map 1");

5. map的遍历:

   map<string, int>::iterator iter; 

   for(iter = myMap.begin(); iter != myMap.end(); iter++)

   { 

     ........

   }
6. map自定义比较函数:

   1)元素不是结构体

   map<int, char, myComp> myMap;

   struct myComp

   {

      bool operator()(const int &a, const int &b)

      {

         if(a!=b) return a>b;

         else return a>b;

      }

   }

   2)元素是结构体

   把比较函数写在结构体中。

   map<Info, int> myMap;

   struct Info

   {

      float value;

      bool operator<(const Info &a) const

      {

         return a.value < value;

      }

   }
 

7. map的基本操作函数:
      C++ Maps是一种关联式容器,包含“关键字/值”对
      begin()           返回指向map头部的迭代器
      clear()          删除所有元素
      count()           返回指定元素出现的次数
      empty()          如果map为空则返回true
      end()             返回指向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的函数