zoukankan      html  css  js  c++  java
  • map

    map:hash映射,提供key和value,实现一对一的映射

    ①头文件:#include <map>

    ②使用方法:map<type1 , type2> Map; 

    ③实现方法:map用红黑树实现,map先按照type1升序排序,再按type2升序排序。因此map是有序的,无须对map进行排序

    ④通过key找到value,key唯一,value不唯一

    ⑤unordered_map<type1 , type2>  无序map

    无序map 插入和删除的时间复杂度为O(1),比普通map快

    如果用map超时且不需要有序可以考虑无序map

    unordered_map 在C++ 11 才可以用,否则会编译出错

    ⑥map的常用方法:

         begin()         返回指向map头部的迭代器

         end()           返回指向map末尾的迭代器

         find()          查找一个元素

         erase()         删除一个元素

         insert()        插入元素

         clear()        删除所有元素

         empty()         如果map为空则返回true

         size()          返回map中元素的个数

         swap()           交换两个map

         count()         返回指定元素出现的次数

    例:

    map<int , string> mapStudent ; 

    ①插入数据:insert()

    //用pair向map插入数据
    
    //可typedef pair<int, string> P; 简化操作
    
    map<int,string> mapStudent;
    mapStudent.insert(pair<int,string>(1,"student_one"));
    mapStudent.insert(pair<int,string>(2,"student_two"));
    mapStudent.insert(pair<int,string>(3,"student_three"));

    ②查找数据:find()返回key所在的位置,返回的是迭代器;若key不存在返回最后一个元素的位置

    map<int,string>::iterator iter ;        //定义迭代器
    iter = mapStudent.find(1);        //返回key=1的元素所在的位置给iter
    if(iter != mapStudent.end())
        cout<<”the value is ”<<iter->second<<endl;

    ③删除数据:erase()提供用key删除元素或用迭代器删除,也可用迭代器范围删除区间元素

    //erase()提供三种方法
    
    //用迭代器刪除元素
    iter = mapStudent.find("1");
    mapStudent.erase(iter);
     
    //用关键字刪除,删除成功返回1,否则返回0
    int n = mapStudent.erase("1"); 
     
    //用迭代器范围刪除 : 把整个map清空
    mapStudent.erase(mapStudent.begin(), mapStudent.end());
  • 相关阅读:
    jsp转向
    什么是 XDoclet?
    tomcat中的几点配置说明
    mysql5问题
    POJ 3734 Blocks
    POJ 2409 Let it Bead
    HDU 1171 Big Event in HDU
    POJ 3046 Ant Counting
    HDU 2082 找单词
    POJ 1286 Necklace of Beads
  • 原文地址:https://www.cnblogs.com/shiliuxinya/p/12180731.html
Copyright © 2011-2022 走看看