C++ map

map的特殊之处

会自动对key进行排序,可以在某些大数据的情况下代替sort。

正是如此不能对 map 使用 sort

可以让一个任意类型的数据作为key值映射到另一类型的数据。

map 的 swap 是直接交换两个容器,如 m1.swap(m2);

导入头文件

#include<map>

数据的插入和输出

map<string,int> A;
    
    string a;
    int b;
    
    cin >> a >> b;
    
    A.insert(pair<string,int>(a,b));
    A.insert(map<string,int>::value_type(a,b));    //map中不会存在重复的元素
    
    cin >> a >>b;

    A[a] = b;    //最简单的赋值方式
    //反向迭代器
    for(map<string,int>::reverse_iterator i = A.rbegin();i != A.rend();i ++) cout << i->first << " : " << i->second <<endl;
    //正向迭代器
    for(map<string,int>::iterator i = A.begin();i != A.end();i ++) cout <<i->first << " : " << i-> second << endl;

数据的查找

find 函数若在map中查找不到该 key 值则返回 end 值

map<string,int>::iterator here,here_too;
    here = A.find("abs");
    here_too = A.find("1");
    
    if(here != A.end()) cout << here -> first << " : " << here -> second << endl;
    if(here_too != A.end()) cout << here_too -> first << " : " << here_too -> second << endl;

数据的删除

    map<string, int>::iterator here = A.find("abs");    //查找地址
    if(here != A.end()) A.erase(here);    //使用 erase 删除

其他命令

引自

      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的函数
posted @ 2021-05-18 19:04  Xuuxxi  阅读(136)  评论(0编辑  收藏  举报