• C++标准模板库(STL)之Map


    1、Map的常用用法

    map:映射。可以将任何基本类型,结构体,STL容器映射到任何基本类型包括容器。

    使用map,需要加map的头文件,#include<map>和using namespace std;

    1.1、map的定义

    map<typename1,typename2> mp;
    map<string,int> mp;
    //如果是字符串到int的映射,必须使用string不能使用char数组。

    1.2、map容器元素的访问

    map的两种访问方式:下标访问、迭代器访问

    1.2.1、下标访问

    和访问数组一样。map中键是唯一的

    1.2.2、迭代器访问

    map<typename1,typename2>::iterator it;

    #include<stdio.h>
    #include<map>
    
    using namespace std;
    
    int main()
    {
        map<char,int> mp;
        mp['a']=5;
        mp['b']=10;
        mp['d']=40;
        mp['c']=20;
        mp['c']=30;//20被覆盖
        printf("%d
    ",mp['c']);
        for(map<char,int>::iterator it=mp.begin();it!=mp.end();it++)
        {
            printf("%c %d
    ",it->first,it->second);//it->first:当前映射的键,it->second:当前映射的值
        }
        //a 5  
        //b 10  
        //c 30 
        //d 40
        //map会以键从小到大的顺序自动排序。map内部是使用红黑树实现的,set内部也是。
        //建立映射的时候,会自动实现从小到大的排序功能
        return 0;
    }
    View Code

    1.3、map常用函数

    1.3.1、find()

    find(key):返回键为key的映射,时间复杂度为O(logN)

    1.3.2、erase()

    删除单个元素:

    mp.erase(it):it为需要删除的元素的迭代器。时间复杂度为O(1)

    mp.erase(key):key为删除元素的键,时间复杂度为O(logN)

    删除区间内的元素,左闭右开[start,end)

    1.3.3、size()
    1.3.4、clear()

    用来清空map,复杂度为O(N)

    #include<stdio.h>
    #include<map>
    
    using namespace std;
    
    int main()
    {
        map<char,int> mp;
        mp['a']=5;
        mp['b']=10;
        mp['d']=40;
        mp['c']=20;
        mp['c']=30;//20被覆盖
        printf("%d
    ",mp['c']);//30
        
        mp.erase('b');//删除键为b的映射,也就是b 10
        for(map<char,int>::iterator it=mp.begin();it!=mp.end();it++)
        {
            printf("%c %d
    ",it->first,it->second);
        }
        //a 5
        //c 30
        //d 40
        map<char,int>::iterator it=mp.find("a");
        mp.erase(it);//删除a 5
        for(map<char,int>::iterator it=mp.begin();it!=mp.end();it++)
        {
            printf("%c %d
    ",it->first,it->second);
        }
        //c 30
        //d 40
        mp['e']=50;
        mp['f']=60;
        map<char,int>::iterator it=mp.find("d");
        mp.erase(it,mp.end());//删除区间, d 40  e 50
        return 0;
    }
    View Code

    1.4、map的常见用途

    a、建立字符或者字符串与整数之间的映射的时候,使用map

    b、判断大整数或者其他类型数据是否存在的时候,map可以当bool数组用

    c、字符串和字符串的映射

    2018-09-25 19:20:09

    @author:Foreordination

  • 相关阅读:
    《图像处理实例》 之 Voronoi 图
    《图像处理实例》 之 Voronoi 图
    《图像处理实例》 之 Voronoi 图
    Docker 1.13.0 详细更新日志
    Docker 1.13.0 详细更新日志
    Docker 1.13.0 详细更新日志
    Docker 1.13.0 详细更新日志
    Ubuntu上安装VMware tools
    Ubuntu上安装VMware tools
    Casper CBC 简要说明
  • 原文地址:https://www.cnblogs.com/drq1/p/9699482.html
Copyright © 2020-2023  润新知