map 與 set 簡單用法

2021-08-09 01:28:29 字數 2545 閱讀 4408

map 與 set 簡單用法

map  |  set

(用於查詢時用set)

一:map

在map中元素有兩種插入方法:

在map中使用下標訪問不存在的元素將導致在map容器中新增乙個新的元素。

insert函式的插入方法主要有如下:

上述的e乙個value_type型別的值。beg和end標記的是迭代器的開始和結束。

#include #include using namespace std;

int main()

for (int i = 10; i < 20; i++)

map::iterator it;

for (it = mp.begin(); it != mp.end(); it++)

return 0;

}

注意:上述採用下標的方法讀取map中元素時,若map中不存在該元素,則會在map中插入。

因此,若只是查詢該元素是否存在,可以使用函式count(k),該函式返回的是k出現的次數;若是想取得key對應的值,可以使用函式find(k),該函式返回的是指向該元素的迭代器。

上述的兩個函式的使用如下所示:

#include #include using namespace std;

int main()

if (mp.count(0))else

map::iterator it_find;

it_find = mp.find(0);

if (it_find != mp.end())else

map::iterator it;

for (it = mp.begin(); it != mp.end(); it++)

return 0;

}

從map中刪除元素的函式是erase(),該函式有如下的三種形式:

第一種方法刪除的是m中鍵為k的元素,返回的是刪除的元素的個數;第二種方法刪除的是迭代器p指向的元素,返回的是void;第三種方法刪除的是迭代器b和迭代器e範圍內的元素,返回void。

#include #include using namespace std;

int main()

mp.erase(0);

mp.erase(mp.begin());

map::iterator it;

for (it = mp.begin(); it != mp.end(); it++)

return 0;

}

二:set

set集合容器:實現了紅黑樹的平衡二叉檢索樹的資料結構,插入元素時,它會自動調整二叉樹的排列,把元素放到適當的位置,以保證每個子樹根節點鍵值大於左子樹所有節點的鍵值,小於右子樹所有節點的鍵值;另外,還得保證根節點左子樹的高度與右子樹高度相等。

平衡二叉檢索樹使用中序遍歷演算法,檢索效率高於vector、deque和list等容器,另外使用中序遍歷可將鍵值按照從小到大遍歷出來。

構造set集合主要目的是為了快速檢索,不可直接去修改鍵值。

常用操作:

1.元素插入:insert()

2.中序遍歷:類似vector遍歷(用迭代器)

3.反向遍歷:利用反向迭代器reverse_iterator。

例:sets;

......

set::reverse_iterator rit;

for(rit=s.rbegin();   rit!=s.rend();   rit++)

4.元素刪除:與插入一樣,可以高效的刪除,並自動調整使紅黑樹平衡。

sets;

s.erase(2);        //刪除鍵值為2的元素

s.clear();

5.元素檢索:find(),若找到,返回該鍵值迭代器的位置,否則,返回最後乙個元素後面乙個位置。

sets;

set::iterator it;

it=s.find(5);    //查詢鍵值為5的元素

if(it!=s.end())    //找到

cout<<*it<

6.自定義比較函式

(1)元素不是結構體:

例://自定義比較函式mycomp,過載「()」操作符

struct mycomp

}sets;

......

set::iterator it;

(2)如果元素是結構體,可以直接將比較函式寫在結構體內。

例:struct info

{string name;

float score;

//過載「<」操作符,自定義排序規則

bool operator < (const info &a) const

{//按score從大到小排列

return a.scores;

......

set::iterator it;

map的簡單用法

map 顧名思義就是地圖,包含key和value 當需要快速獲取key和value的時候,就可以用map了 首先,我給出基本的用法插入資料的 1.mapmapstudent mapstudent.insert pair 1,student one mapstudent.insert pair 2,s...

map容器的簡單用法

map是按關鍵字順序來儲存資料 因此關鍵字不能重複 不能直接修改 map 容器中的關鍵字。因為 map 中的元素是按照關鍵字排序的,新增元素方法有insert make pair t1,t2 和 insert函式返回型別為pair迭代器指向插入的建值的位置 成功bool為true 失敗為false ...

關於map的簡單用法

在使用map的時候需要新增標頭檔案 include map map一般配合著pair 也是乙個模板類 pair類似於數學中的函式,一雙一對,一對一的關係 1.map和pair的構造 map 資料型別1,資料型別2 名稱 例如 map int int mp map int vector int mp ...