关于map的一些用法

一.Map的使用

  1. 头文件 #include<map>
  2. Map是一个模板类,需要存储关键字和存储对象两个模板参数

Std::map<int , std::string>person;<我们在写的时候std可以去掉>

  1. 可以对模板进行一些定义使其使用方便

Typedef std::map<int ,std::string>map_int_string;

之后的定义我们就可以进行快捷定义:

map_int_string k;

二.Map的构造

  1. map最基本的构造参数std::map<int ,std::string> person;
  2. map添加数据 
    (1)用inset函数插入value_pair数据
    例如:person.insert(std::map<int , std::string>::value_type(2,"tom"));//person是map类型变量
    (2)inset函数插入pair数据
    例如:std::map<int , std::string>map_person;
    map_person.insert(pair<int ,string>(1,"jack"));
    (3)用数组方式插入数据
    mapperson[3]="jerry";

  3. map数据的遍历
    三种最常用的遍历方法
    (1)前向迭代器
    std::map<int ,std::string>::iterator it;
    std::map<int ,std::string>::iterator it;
    it=map_person.begin();
    itend=mapperson.end();
    while(it!=itend){
      cout<<it->first<<" "<<it->second<<"\n";
      it++;
    }
    (2)反向迭代器
    std::map<int,string>::reverse_iterator it;
    for(it=map_person.rbegin;it!=map_person.rend();it++)//反向迭代器,所以这个地方我们可以直接it++
      //cout<<
    (3)数组形式
    mapperson.insert(std::map<int ,std::string>::value_type(1,"tom"));
    mapperson[2]="jim";
    mapperson[3]="jerry"
    int nsize = mapperson.size();
    for(int n=1;n<=nsize;n++);
      qdebug()<<qstring::fromStdString(mapPerson[n]);//
  4. map中元素查找
    find()函数返回一个迭代器指向键值为key的元素,如果没找到就返回map尾部的迭代器
    map<int ,std::string>::iterator it;
    it=mapperson.find(122)
    if(it==mapperson.end()){
        cout<<"we do..."
    }
    else cout<<""
  5. map中元素的删除
    例如我们删除122
    iterator erase(iterator it);//通过一个条目对象进行删除
    iterator erase(iterator first,iterator last);//删除一个范围
    size_type erase(const key&key);//通过关键删除
    clear();//删除全部
  6. map中的swap的用法
    map的swap的用法是容器之间的交换而不是容器中元素的交换
    例:
    map<int,int>m1,m2,m3;
    m1.insert(pair<int , int>(1,10));
    m2.insert(pair<int ,int>(10,100));
    m3.insert(pair<int ,int>(100,1000));
    m1.swap(m2)//这句话执行之后m1就变成了m2,m2就变成了m1

  7. map的sort问题
    map中的元素是按照key中的元素升序排序,所以不能对map使用sort函数
  8. 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的函数