管理元素集合的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<
資料結構與演算法 字典樹
字典樹又稱單詞查詢樹,trie樹,是一種樹形結構,是一種雜湊樹的變種。典型應用是用於統計,排序和儲存大量的字串 但不僅限於字串 所以經常被搜尋引擎系統用於文字詞頻統計。它的優點是 利用字串的公共字首來減少查詢時間,最大限度地減少無謂的字串比較,查詢效率比雜湊樹高。字典樹 桀驁 2018 8 3 in...
js資料結構與演算法 字典
一 字典的主要操作 字典的key是不能重複的 value是可以重複的,重複後面的會覆蓋前面的 二 實現 class dictionary 儲存字典key value 是否有key has key 設定key value set key,value 刪除key delete key return fa...
資料結構與演算法 排序
排序原理 1.比較相鄰的元素。如果前乙個元素比後乙個元素大,就交換這兩個元素的位置。2.對每一對相鄰元素做同樣的工作,從開始第一對元素到結尾的最後一對元素。最終最後位置的元素就是最大 值。氣泡排序的 實現 public static void sortpop int arr 測試 public st...