最近用到了stl中的map,感覺很方便,而且有點也很多,這裡總結一下進來的學習心得。
map是c++的乙個標準容器,遇到一對一關係的程式設計,使用它非常方便。
具體的說map是一類關聯式容器,對它進行插入和刪除操作時速度快,方便。
使用的時候需要建立起 key和value的對應關係,乙個key對應乙個value。建立起來之後,可以修改value的值
但不可以再改變key的值。
1,標頭檔案:
#include //stl標頭檔案都沒有副檔名.h2,定義:mapmy_map;using namspace std;
如果沒有指出命名空間,就需要這樣定義:str:mapmy_map;4,插入元素:這時,int相當於是乙個索引,或者理解成陣列的下標,每乙個int值對應乙個cstring值
另外對容器的操作,都需要用到對每一對關聯的乙個指標,就是對條目的定義:
map::iterator item; //在函式的返回值中會用到
因為map有key和value的一對一關聯關係,那麼可以將它看做陣列,這樣,插入就變得非常簡單:5,查詢元素 findmy_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"));
(記得我們上邊定義的item吧)6,刪除元素 eraseitem = 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
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作為教條式...