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());
  • 相关阅读:
    多条件查询测试用例设计方法(1)—Pairwise(转)
    单例饿汉式和饱汉式各自的有缺点(转)
    Intellij IDEA生成JavaDoc(转)
    Linux常用命令分类
    Linux 常用命令
    数据库简单测试
    postman参数为Json数据结构
    WEB测试常见BUG
    APP应用测试技巧
    APP软件半成品测试技巧
  • 原文地址:https://www.cnblogs.com/shiliuxinya/p/12180731.html
Copyright © 2011-2022 走看看