C++ map類的用法整理


1. 概述

       map是C++中的一種鍵值對容器,要點就是數據在map中是成對出現的,能夠通過鍵也就是key來快速找到對應的值。要想使用標准C++中map類,必須要包含頭文件:

#include <map>

2. 聲明

map<int, string> my_map;  //聲明一個map; map的鍵值對類型可以是基礎數據類型,也可以是結構體或類

3. map迭代器

      和vector一樣,map也存在迭代器,方便對map進行遍歷操作,map中也存在begin,end,rbegin,rend,前兩者為順序的頭尾迭代器,后兩者為逆序的頭尾迭代器。

map<int, string>::iterator iter = my_map.begin();

4. 插入數據

      map中常用的插入數據方式有兩種,一種是通過下標插入,一種是通過insert函數插入

my_map[key] = value;
pair<map<int, string>::iterator, bool> Insert_Pair 
= my_map.insert(pair<int, string>(1, "one"));

      insert函數中的參數除了可以是pair數據以外,還可以是

map<int, string>::value_type(1, "one")
      這樣子的格式,但是個人還是比較喜歡直接通過下標插入。這里要注意比較關鍵的一點是上述兩種方式插入的結果可能是不同的。當key在map中已經存在時,通過下標插入會直接覆蓋之前的值,而insert則不會插入。從代碼中我們也可以看出insert函數的返回值是一個pair,pair的第一個值是要插入的map的和插入值的key相同的那個迭代器,而第二個值就是插入結果,true則成功插入,false則沒有。還有一點特別要注意的是不要用下標來查找map中是否存在某鍵值對,這會導致map中插入新的值或者之前的值被覆蓋。

5. 判斷key是否存在

      對於map來說判斷key是否存在是一個非常重要的操作

int num = my_map.count(key);  //返回值是0或1,表示map中某個key出現的次數
//返回值是一個迭代器,如果找到了就是對應的鍵值對,如果沒找到就是my_map.end()對應的迭代器
map<int, string>::iterator iter = my_map.find(key);  

6. 刪除數據

      map中刪除數據主要有三種方式,通過迭代器刪除某個鍵值對,通過迭代器刪除某些鍵值對和通過key刪除鍵值對

my_map.erase(iter);
my_map.erase(begin_iter, end_iter);
my_map.erase(key);

7. 其他常用函數

my_map.size(); //返回map中的鍵值對個數
my_map.clear(); //清除map中所有鍵值對
my_map.empty(); //返回map是否為空,返回值為bool

 

 

 


免責聲明!

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



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