關聯容器 (map multimap)

2021-09-27 03:28:31 字數 1871 閱讀 2176

map的特性是所有元素都會根據元素的鍵值自動被排序,map的所有元素都是一對的(pair),同時擁有實值(value)和鍵值(key)。pair中的第乙個元素被看作鍵值,第二個元素被看做實值,且map不允許兩個元素擁有相同的鍵值。

map和list擁有相同的某些性質,當它對容器元素進行新增或刪除時,操作之前的所有迭代器在操作完成值後依然有效。

maparr; //建立乙個名為arr的空的map,其鍵值和實值為key和value

maparr(arr2); //建立arr2的副本arr,arr和arr2必須有相同的鍵型別和值型別

maparr(a,b); //建立map型別的物件arr,儲存迭代器a和b標記的範圍內所有元素的副本,元素的型別必須能轉換為pair

maparr; //comp可選,為鍵值對的存放策略,即鍵的比較函式,預設標準庫使用鍵型別定義的《操作符來實現鍵的比較。所用的比較函式必須在鍵型別上定義嚴格的弱排序,可將其理解為鍵型別資料上的「小於關係」。在實際應用中,鍵型別必須能定義《操作符。對於鍵,其唯一的約束就是必須支援《操作符。

1.插入

arr.insert(e);

e是乙個用在arr上的value型別的值。如果e.first不在arr中,則,插入乙個值為e.second的新元素;如果該鍵在arr中已存在,那麼不進行任何操作。該函式返回乙個pair型別物件,包含指向鍵為e.first的元素map的迭代器,以及乙個bool型別的物件,表示是否插入了該元素。

arr.insert(beg,end);

beg,end是標記元素範圍的迭代器,對於該範圍內的所有元素,如果它的鍵在arr中不存在,則將該鍵及其關聯的值插入到arr。返回void型別。

arr.insert(iter,e);

e是value型別的值,如果e.first不在arr中,則建立新元素,並以迭代器iter為起點搜尋新元素儲存的位置,返回下乙個迭代器,指向arr中具有給定鍵的元素。在新增新的map元素時,使用insert成員可避免使用下標操作符帶來的***,即不必要的初始化。

插入元素的方式有三種:

通過pair的方式插入物件

arr.insert(pair(3,"小張"));或arr.insert(make_pair(-1,"小王"));

通過value_type的方式插入物件

arr.insert(map::value_type(1,"小李"));

通過陣列的方式插入

arr[4]="小劉";

2.刪除

arr.clear(); //刪除所有元素

arr.erase(pos); //刪除pos所指的元素,返回下乙個元素的迭代器

arr.erase(beg,end); //刪除區間[beg,end)的所有元素,返回下乙個元素的迭代器

arr.erase(keyelem); //刪除容器中key為keyelem的組對

3.查詢

arr.find(key); //查詢鍵值key是否存在,存在返回該鍵的元素的迭代器,不存在返回map.end()

arr.count(keyelem); //返回容器中key為keyelem的對組的個數,對於map來說要麼是0要麼是1

arr.lower_bound(keyelem); //返回第乙個key>=keyelem元素的迭代器

arr.upper_bound(keyelem); //返回第乙個key>keyelem元素的迭代器

arr.equql_range(keyelem); //返回容器中key與keyelem相等的上下限的兩個迭代器

#include#include#includeusing namespace std;

int main()

}

關聯式容器map multimap

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

map multimap容器相關使用

1.簡介 2.本質 3.優點 4.map和multimap區別 5.map構造和賦值 6.map相關函式 size 返回容器中元素數目 empty 判斷容器是否為空 swap st 交換兩個容器 insert elem 在容器中插入元素elem clear 清除所有元素 erase pos 刪除po...

STL學習筆記 map multimap容器

簡介 map是標準的關聯式容器,乙個map是乙個鍵值對的序列,即 key,value 提供基於key的快速檢索能力 map中key的值是唯一的。map中的元素按照一定的順序排列,元素插入是按照排序規則插入的,不能指定位置插入 map的具體實現是紅黑樹變體的平衡二叉樹資料結構。插入和刪除比vector...