c map學習心得

2021-05-26 12:49:54 字數 1667 閱讀 2082

最近用到了stl中的map,感覺很方便,而且有點也很多,這裡總結一下進來的學習心得。

map是c++的乙個標準容器,遇到一對一關係的程式設計,使用它非常方便。

具體的說map是一類關聯式容器,對它進行插入和刪除操作時速度快,方便。

使用的時候需要建立起 key和value的對應關係,乙個key對應乙個value。建立起來之後,可以修改value的值

但不可以再改變key的值。

1,標頭檔案:

#include //stl標頭檔案都沒有副檔名.h

using namspace std;

2,定義:mapmy_map;

如果沒有指出命名空間,就需要這樣定義:str:mapmy_map;

這時,int相當於是乙個索引,或者理解成陣列的下標,每乙個int值對應乙個cstring值

另外對容器的操作,都需要用到對每一對關聯的乙個指標,就是對條目的定義:

map::iterator  item;     //在函式的返回值中會用到

4,插入元素:

因為map有key和value的一對一關聯關係,那麼可以將它看做陣列,這樣,插入就變得非常簡單:

my_map[1]="number 1";

my_map[2]="number 2";

1,2就分別與number 1 , number 2相關聯,在my_map中就存在兩條記錄

這樣非常好理解,卻存在乙個效能上的問題。每插入乙個元素,都要先查詢map中有沒有這個key值的項

如果沒有,就插入乙個新的項,並先給這個項的第二個元素賦值為空字串,然後再將它賦值為 number 1

這樣就增大了開銷

當然,我們也有更好的辦法來避免這種開銷:使用insert函式

my_map.insert(map::value_type(1,"number 1"));

5,查詢元素 find

(記得我們上邊定義的item吧)

item = my_map.find(n);    //這裡的n為int型別,因為my_map是int與cstring對應的

if(item == my_map.end())     //說明在my_map中沒有找到key值為n的項

//do something

else       //說明找到了key為n 的項

//do other thing

如果找到了,那麼怎麼得到這一項的字串呢,可以使用item

item->first       //為key值

item->second //就是我們想要得到的value

6,刪除元素  erase

iterator erase(iterator it); //通過乙個條目物件刪除

iterator erase(iterator first, iterator last); //刪除乙個範圍

size_type erase(const key& key); //通過關鍵字刪除

例如:item = my_map.erase(n);

my_map.erase(my_map.begin(),my_map.end());

學習心得 python學習心得

自從來了深圳工作以後,尤其是屢屢面試碰壁以後。發現其實自己的知識面很窄,做筆試題的時候絞盡腦汁還是漏洞百出,並不是不會做,而是出現一大堆不該有的失誤。每次被問道,對資料庫了解嗎?說一大堆看起來很高階的東西 好啊,那我們寫幾個sql語句吧。馬上完蛋了,沒了手冊關鍵字都記不起。了解哪幾種指令碼語言,sh...

學習心得 我的學習心得

我是乙個已經步入中年的70後,離開校園已經20年了,因為當年的政策因素而未能圓我的大學夢,在20年的工作過程中總是因為缺少一張大學文憑而失去了很多機會,曾經也考慮過自考,但是乙個人去面對的時候總感覺心有餘而力不足。2018年3月份偶然讓我認識了尚德,原來自考還可以這樣學習。一直懷疑自己年紀大了記憶力...

Spring學習心得

不看不知道,一看便學到,會不會與您產生共鳴呢?喜歡再捧場拍磚 spring使用從一年前開始,邊學習邊開發。這裡講講我的學習心得。第一條 記住ioc就是spring的一切。而掌握ioc的唯一方法就是使用和思考。spring是ioc為核心的,所以第一步就是要深刻理解ioc,最好是能盡快把ioc作為教條式...