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的函數

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM