zoukankan      html  css  js  c++  java
  • C语言 · C++中map的用法详解

    一、定义  

      (1) map<string,   int>   Map; 
      (2) 或者是:typedef   map<string,int>   Mymap; 
             Mymap   Map; 

    二、插入元素 

    插入数据之前先说一下pair 和 make_pair 的用法。

    1. pair是一个结构体,有first和second 两个域,可以直接访问

    1 string key="sunquan";  
    2 int value=123456;  
    3 pair <string,int>  b(key, value);//这里 pair <string,string>是数据类型,后面是调带参构造方法  
    4 cout<<b.first<<endl; 

    2. 而make_pair是返回一个pair <类型,类型>  的数据,

      eg:make_pair("asa",123456);  

    不过还得找个pair <string,int>类型的变量来接受返回值。

     (1) Map["abc"]=1;
     (2) Map.insert(pair<string,int>("c",3));
     (3) Map.insert(make_pair<string,int>("d",4)); 

    三、修改、查找元素

      (1)修改Map["sunquan"]=11111;

      (2)查找数据:可以通过键来查,语法:Map.find(key); 这样会返回迭代器的地址,key不存在的话迭代器的值为Map.end();

      注:不要用int value=Map[key];

      这样会在Map中增加这个key,而value就是缺省值(int 为0,string为空字符串)。

    四、删除元素

     (1)通过key删除;

     (2)通过迭代器来删除;

       相关操作的详细代码:

     1 #include <iostream>  
     2 #include <cstdio>  
     3 #include <cstring>  
     4 #include <string>  
     5 #include <map>  
     6 using namespace std;  
     7   
     8 int main()  
     9 {  
    10     map<string,int> Map;  
    11     map<string,int> ::iterator it;  
    12     Map.insert(pair<string,int>("root",12));  
    13     Map.insert(pair<string,int>("scot",11));  
    14     for(it=Map.begin();it!=Map.end();it++)  
    15         cout<<it->first<<"    "<<it->second<<endl;  
    16     it=Map.begin();  
    17     Map.erase(it);//通过迭代器删除  
    18     string key="root";  
    19     Map.erase(key);//通过key删除  
    20       
    21     Map.erase(Map.begin(),Map.end());//一个迭代器,到另一个迭代器  
    22     //相当于  Map.clear();  
    23   
    24     for(it=Map.begin();it!=Map.end();it++)  
    25         cout<<it->first<<"    "<<it->second<<endl;  
    26     return 0;  
    27 }  

    注:

      map<int, string>::iterator it 是声明一个 迭代器
      map<int, string> it 是 声明一个map容器

    五、c++中map的常见方法

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

      clear()  删除所有元素

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

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

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

      equal_range()  返回特殊条目的迭代器对

      erase()  删除一个元素

      find()  查找一个元素

      insert()  插入元素

      max_size()  返回可以容纳的最大元素个数

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

      swap()  交换两个map

      get_allocator()  返回map的配置器

      key_comp()       返回比较元素key的函数

      lower_bound()    返回键值>=给定元素的第一个位置

      max_size()       返回可以容纳的最大元素个数

      rbegin()         返回一个指向map尾部的逆向迭代器

      rend()           返回一个指向map头部的逆向迭代器

      upper_bound()     返回键值>给定元素的第一个位置

      value_comp()      返回比较元素value的函数

  • 相关阅读:
    Android 项目结构图
    MySQL的简单使用
    MySql简易配置
    SQL Server 2008 R2 错误代码:233
    C#设置输入框只输入数字
    【学习笔记】JAva编程思想之多态
    【Java之对象清理】finalize()的用途
    【错误总结】java.lang.NoClassDefFoundError: org/objectweb/asm/ClassVisitor
    【学习笔记】Struts2之配置处理结果
    【学习笔记】Struts2之一个Action包含多个控制处理逻辑
  • 原文地址:https://www.cnblogs.com/panweiwei/p/6657583.html
Copyright © 2011-2022 走看看