• map用法


    参考博客:https://www.cnblogs.com/empty16/p/6395813.html

    在这里仅对原笔主的博客做一点小补充;


    一、Map 简介

      Map是STL的一个容器,它提供一对一的hash。

    • 第一个可以称为关键字(key),每个关键字只能在map中出现一次,
    • 第二个可能称为该关键字的值(value)


      Map以模板(泛型)方式实现,可以储存任意类型的变数,包括使用者自定义的资料型态。Map主要用于资料一对一映射(one-to-one)的情况,map内部的实现自建一颗红黑树,这颗树具有对数据自动排序的功能。比如一个班级中,每个学生的学号跟他的姓名就存在着一对一映射的关系。

    二、成员函式概观与常用程式写法

    1. 变量声明

    map<string, string> mapStudent;

    2. 插入元素

    //用insert函數插入pair
        mapStudent.insert(pair<string, string>("r000", "student_zero"));
     
    //用"array"方式插入
        mapStudent["r123"] = "student_first";
        mapStudent["r456"] = "student_second";

    3. 查找


    出现时,它返回资料所在位置,如果没有,返回iter与end函数返回相同

    iter = mapStudent.find("r123");
     
    if(iter != mapStudent.end())
           cout<<"Find, the value is"<<iter->second<<endl;
    else
       cout<<"Do not Find"<<endl;

    4. 删除&清空

    清空map中的数据可以用clear()函数,判定map中是否有数据可以用empty()函数,它返回true则说明是空map,而资料的删除要用到erase函数,它有三个overload的函数。

    //迭代器刪除
    iter = mapStudent.find("r123");
    mapStudent.erase(iter);
     
    //用关键字刪除
    int n = mapStudent.erase("r123");//如果刪除了会返回1,否则返回0
     
    //用迭代器范围刪除 : 把整个map清空
    mapStudent.erase(mapStudent.begin(), mapStudent.end());
    //用删除函数
    mapStudent.clear();

    5.元素遍历

    //迭代器遍历
    for(map<string, string>::iterator iter = mapStudent.begin(); iter<mapStudent.end(); iter++);
    
    //C++11特性
    for(auto iter:mapStudent);

    6.其他常用基本函数

    swap()    //交换两个map
    
    count()    //返回所查找元素个数
    
    empty()    //若容器为空返回true
    
    size()    //返回容器元素个数
    
    rbegin()    //逆向迭代器,返回容器尾部
    rend()    //逆向迭代器,返回容器头部
  • 相关阅读:
    感悟.
    近期感悟
    android 新建项目无法自动生成R文件
    重装后各种碰壁
    rhapsody
    libevent
    ui android需要解决的问题
    sql对xml的解析
    将datarow转换为实体的方法
    网页中的一些我不熟的东西
  • 原文地址:https://www.cnblogs.com/liubilan/p/9458765.html
Copyright © 2020-2023  润新知