C 演算法與資料結構之map

2021-10-25 11:24:09 字數 1151 閱讀 1280

管理元素集合的stl容器大致分為兩類。一類是有順序的集合,稱為序列式容器;另一類是經過排序的集合,稱為關聯式容器。

序列式容器會將新新增的元素置於特定為位置,這個位置由插入的時間和地點決定,與元素本身的值無關。前面介紹過的vector和list就是很有代表性的序列式容器。

相對地,關聯式容器會依據特定的排序標準來決定要新增的元素的位置。stl為使用者提供了set、map、multiset、multimap容器。

關聯式容器會在管理資料的過程中,自動給元素排序。雖然序列式容器也能進行排序,但是關聯式容器的優勢在於,開源隨時採用二分搜尋法,搜尋元素的效率極高。

map是以鍵與值的組合為元素的集合。每個元素擁有乙個鍵和乙個值,集合以鍵作為排序標準。這裡的map和python中的dict類似,各元素的鍵唯一,不存在重複。map可以看作是一種能使用任意型別元素作為下標的關聯式容器。

map的用法:

函式名功能

複雜度size()

返回map中的元素數

o(1)

clear()

清空map

o(1)

begin()

返回指向map開頭的迭代器

o(1)

end()

返回指向map末尾的迭代器

o(1)

insert((key, value))

向map中插入元素(key, value)

o(logn)

erase(key)

刪除鍵值為key的元素

o(logn)

find(key)

搜尋與key一致的元素,並且返回指向該元素的迭代器。

若沒有與key鍵值一致的元素,則返回end()

o(logn)

map與set一樣,也是通過平衡二叉樹來實現的。因此元素的插入、刪除、搜尋的複雜度都是o(logn)

下面的一串**演示了map的幾種基本用法

#include#include#includeusing namespace std;

void print(mapt)

else

{cin>>ipt;

if(m[ipt])

cout<<"yes"《這裡就是把key設成字串,然後值設為乙個bool變數。由於bool預設是false的,所以,就可以很方便地實現乙個字典的查詢功能。

C 儲存資料結構之map

map 是c 的乙個標準容器,它提供了很好一對一的關係,在一些程式中建立乙個map可以起到事半功倍的效果,總結了一些map基本簡單實用的操作!1.map建構函式 mapmapstring mapmapint mapmapstring map char string mapchar mapmapcha...

字典排序map C 演算法與資料結構之map

管理元素集合的stl容器大致分為兩類。一類是有順序的集合,稱為序列式容器 另一類是經過排序的集合,稱為關聯式容器。序列式容器會將新新增的元素置於特定為位置,這個位置由插入的時間和地點決定,與元素本身的值無關。前面介紹過的vector和list就是很有代表性的序列式容器。相對地,關聯式容器會依據特定的...

Map與資料結構

上篇中介紹了collection中arraylist和linkedlist和在資料結構中的分析。但在,由於collection是無論是基於陣列的arraylist還是基於鍊錶的linkedlist它都沒有辦法儲存有關係的資料,比如乙個人的姓名 身份證,這樣有關係的資料。因此就有了map介面。arra...