C 容器 關聯式容器

2021-08-10 00:21:20 字數 2065 閱讀 2419

由於multimap和map相差不大,所以基本以map做練習;

集合(map)是一種包含已

排序(公升序)

物件的關聯

容器。map/

multimap會根據待定的排序準則,自動將元素排序。兩者不同在於前者不允許元素重複,而後者允許。

集合元素的第乙個引數是key,第二個元素當做value,元素的順序與key有關,與value無關;

模板

原型:

//key為元素(鍵值)型別

1

template<classkey, class t,classcompare=less,classalloc=allocator>> class map

key:元素的key鍵;

t:元素的value;

comapre:實現內部排序的仿函式;

allocator:記憶體配置器,負責記憶體的分配和銷毀;

建構函式:

map c; //產生乙個空的map

map c(op); //以op為排序準則,產生乙個空的map

map c(begin,end);//以區間(begin,end)內的元素產生乙個新的map

map c(begin,end,op);//以區間(begin,end)內的元素產生乙個新的map,元素排序準則為op

map c1(c) //產生某個map的物件副本

op:排序準則:

1、map> m1;

2、map::allocator_type ma;

ma=m1.get_allocator();

map m2(less(),ma);

輸出:

map>::iterator it;

for迴圈:

custompair p1 = (pair)(*it);

p1.first();p1.second();

格式化輸出:fixted、cout.precision(3)等

相關函式:

begin()          返回指向map頭部的迭代器

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

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

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

insert()         插入元素

clear()         刪除所有元素

erase()          刪除乙個元素

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

find()           查詢乙個元素

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

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

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

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

get_allocator()  返回map的配置器,指明物件的初始儲存位址

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

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

swap()            交換兩個map

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

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

--------------------------------

【pair】用法:

-------------------------------

**練習:

關聯式容器

關聯式容器是用來儲存資料的,與序列式容器不同的是,其儲存的是結構的鍵值對,在資料檢索時比序列式容器效率更高。鍵值對 用來表示具有一一對應關係的結構,該結構中一般只含兩個成員變數key和value,key代表鍵值,value表示與key對應的資訊。比如 現在要建立乙個英漢互譯的字典,那該字典中必然有英...

關聯式容器map multimap

和set相比,map同時擁有實值 value 和鍵值 key 其每乙個元素都是pair,pair的第乙個元素是鍵值,第二個元素是實值。map和multimap的區別在於,map不允許兩個元素擁有相同的鍵值,而multimap允許存在重複的鍵值。pair pair定義如下 1 23 4567 89 t...

關聯式容器 map

map的特性是,所有元素都會根據元素的鍵值自動被排序。map的所有元素的型別都是pair,而map的底層就是一顆紅黑樹。它不同set的是,它既有是鍵值 key 排序根據key排序,鍵值保持唯一性,它還具有實值 value pair既pair的first為key,second為value。我們不能修改...