Map容器學習

2021-08-20 13:35:58 字數 2844 閱讀 3593

資料結構

map既對映,其中所有的元素都是pair且有序,同時擁有實值(value)和關鍵字(key)。map以rb-tree底層機制,其實就是一種平衡二叉搜尋樹。

為了保護map內元素的組織有序性,故c++不允許使用者對map元素的key值隨意修改,只能對value進行修改。

pair的定義:

template struct pair

pair(const t1 &a, const t2 &b) : first(a), second(b) {}

};

成員定義

//預設採用遞增排序

template , class alloc = alloc>

class map

explicit map(const compare& comp) : t(comp) {} //explicit抑制建構函式的隱式轉換

//stl

template map(inputiterator first, inputiterator last) : t(compare())

template map(inputiterator first, inputiterator last, const compare& comp) : t(comp)

//c++

map(const value_type* first, const value_type* last) : t(compare())

map(const value_type* first, const value_type* last, const compare& comp) : t(comp)

map(const_iterator first, const_iterator last) : t(compare())

map(const_iterator first, const_iterator last, const compare& comp) : t(comp)

//複製建構函式

map(const map& x) : t(x.t) {}

map& operator=(const map& x)

介面

key_compare key_comp() const 

value_compare value_comp() const

正向迭代器:

iterator begin()

const_iterator begin() const

iterator end()

const_iteratorend() const

反向迭代器:

reverse_iterator rbegin()

const_reverse_iterator rbegin() const

reverse_iterator rend()

const_reverse_iterator rend() const

計數:

size_type size() const

size_type max_size() const

//過載,返回的是引用

t &operator(const key_type &k)

swap:

voidswap(map&x)

插入/刪除

//單個插入

pairinsert(const value_type &x)

iterator insert(iterator position, const value_type &x)

//插入區間

template voidinsert(inputiterator first, inputiterator last)

voidinsert(const value_type *first, const value_type *last)

voidinsert(const_iterator first, const_iterator last)

voiderase(iterator position)

size_type erase(const key_type &x)

voiderase(iterator first, iterator last)

void clear()

操作查詢:

iterator find(const key_type &x) 

const_iterator find(const key_type &x) const

統計鍵值為x的個數:

size_type count(const key_type &x) const

求區間://[x,x)區間

const_iteratorlower_bound(const key_type &x)

const_iteratorupper_bound(const key_type &x)

const_iteratorequal_range(const key_type &x)

比較:

friendbooloperator==__stl_null_tmpl_args(const map &,const map&);

friendbooloperator<__stl_null_tmpl_args(const map &,const map&);

STL容器類map學習

map類定義了乙個關聯容器,並且在容器中使用唯一的關鍵字 任何兩個元素的鍵都不相同 來對映相應的值。從本質上來說,關鍵字就是值的名字。在map物件中儲存了乙個值之後,就可以通過關鍵字來獲得它。map物件是一系列關鍵字 值的匹配對。map的主要功能在於 只有你知道了乙個值的關鍵字,就能夠找到這個值。例...

Map 容器 學習總結(摘抄)

下標訪問 和at 方法兩種方式,推薦第二種方法,它會進行邊界檢查。對於mapmap str 其訪問方式為 map str firstel 或者map str.at firstel 返回鍵值firstel對應的值 int size const 返回對映中的元素數量。map.size bool empt...

set容器 map容器

簡介 本質 set和multiset區別 構造 賦值 include void printset set int s cout endl 構造和賦值 void test01 intmain 總結 函式原型 include void printset set int s cout endl 大小 vo...