C 中map的學習筆記

2021-09-02 23:04:20 字數 2034 閱讀 9825

map需要的標頭檔案是#include < map >

map是一類關聯性容器,它的特點是增加和刪除節點對迭代器的影響很小,除了那個操作節點,對其他的節點都沒有什麼影響。對於迭代器來說,可以修改實值,而不能修改key。

我感覺map比較好用的就是key-value對,其中key和value可以是任意你需要的型別,比如mapm;

根據key值快速查詢記錄,查詢的複雜度基本是o(logn)

內部實現機理

優缺點以及適用處

有序性,這是map結構最大的優點,其元素的有序性在很多應用中都會簡化很多的操作

紅黑樹,內部實現乙個紅黑書使得map的很多操作在的時間複雜度下就可以實現,因此效率非常的高

缺點:

空間佔用率高,因為map內部實現了紅黑樹,雖然提高了執行效率,但是因為每乙個節點都需要額外儲存父節點,孩子節點以及紅/黑性質,使得每乙個節點都占用大量的空間

適用處,對於那些有順序要求的問題,用map會更高效一些

unordered_map

因為內部實現了雜湊表,因此其查詢速度非常的快

雜湊表的建立比較耗費時間

適用處,對於查詢問題,unordered_map會更加高效一些,因此遇到查詢問題,常會考慮一下用unordered_map

//資料的插入--第一種:用insert函式插入pair資料  

#include #include #include using namespace std;

int main()

}studentinfo, *pstudentinfo; //學生資訊

int main()

{ int nsize; //用學生資訊對映分數

mapmapstudent;

map::iterator iter;

studentinfo studentinfo;

studentinfo.nid = 1;

studentinfo.strname = "student_one";

mapstudent.insert(pair(studentinfo, 90));

studentinfo.nid = 2;

studentinfo.strname = "student_two";

mapstudent.insert(pair(studentinfo, 80));

for (iter=mapstudent.begin(); iter!=mapstudent.end(); iter++)

coutclear() 刪除所有元素

count() 返回指定元素出現的次數

empty() 如果map為空則返回true

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

equal_range() 返回特殊條目的迭代器對

erase() 刪除乙個元素

find() 查詢乙個元素

get_allocator() 返回map的配置器

insert() 插入元素

key_comp() 返回比較元素key的函式

lower_bound() 返回鍵值》=給定元素的第乙個位置

max_size() 返回可以容納的最大元素個數

rbegin() 返回乙個指向map尾部的逆向迭代器

rend() 返回乙個指向map頭部的逆向迭代器

size() 返回map中元素的個數

swap() 交換兩個map

upper_bound() 返回鍵值》給定元素的第乙個位置

value_comp() 返回比較元素value的函式

C 學習筆記11 map

map簡介 使用map包含map類所在的標頭檔案 include 定義乙個map物件 mapmaptest 容器型別 關聯 key value 實現方式 紅黑樹插入資料 插入資料的四種方式 maptest aaa 100 maptest.insert map value type bbb 200 m...

學習筆記 STL模板中map的使用

建立map容器儲存學生姓名和密碼,輸出所有學生資訊,並根據姓名查詢相應的密碼 define crt secure no warnings include include include include include using namespace std int main 查詢某個人的密碼 str...

C 學習筆記 map的使用樣例

map的基本操作函式 c maps是一種關聯式容器,包含 關鍵字 值 對 begin 返回指向map頭部的迭代器 clear 刪除所有元素 count 返回指定元素出現的次數 empty 如果map為空則返回true end 返回指向map末尾的迭代器 equal range 返回特殊條目的迭代器對...