日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

map的专项知识点总结

發布時間:2023/12/4 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 map的专项知识点总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

map的專項知識點總結

標準庫map類型是一種以鍵-值(key-value)存儲的數據類型。以下分別從以下的幾個方面總結:

(1).map對象的定義和初始化
(2).map對象的基本操作,主要包括添加元素,遍歷等

map為pair類型(先了解pair類型)

(1)pair類型的定義和初始化

pair類型是在有文件utility中定義的,pair類型包含了兩個數據值,通常有以下的一些定義和初始化的一些方法:

pair<T1, T2> p;///定義了一個空的pair對象p pair<T1, T2> p(v1, v2);///定義了包含初始值為v1和v2的pair對象p make_pair(v1, v2)///是以v1和v2值創建的一個新的pair對象
(2)pair對象的一些操作

除此之外,pair對象還有一些方法,如取出pair對象中的每一個成員的值:

p.first//p->first p.second//p->second

例如:

#include <stdio.h> #include <string.h> #include <string> #include<algorithm> using namespace std; int main() {pair<int, string> p1(0, "Hello");printf("%d, %s\n", p1.first, p1.second.c_str());pair<int, string> p2 = make_pair(1, "World");printf("%d, %s\n", p2.first, p2.second.c_str());return 0; }

map對象的定義和初始化

map是鍵-值對的組合,有以下的一些定義的方法:

map<k, v> m;///定義了一個名為m的空的map對象 map<k, v> m(m2);///創建了m2的副本m map<k, v> m(b, e);///建了map對象m,并且存儲迭代器b和e范圍內的所有元素的副本。

map的value_type是存儲元素的鍵以及值的pair類型,鍵為const。

map對象的一些基本操作

(1)map中元素的插入

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

(1)使用下標
(2)使用insert函數

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

insert函數的插入方法主要有如下:
m.insert(e)///e一個value_type類型的值 m.insert(beg, end)///beg和end標記的是迭代器的開始和結束。 m.insert(iter, e)

兩種插入方法如下面的例子所示:

#include <stdio.h> #include <map> using namespace std; int main() {map<int, int> mp;for (int i = 0; i < 10; i ++)mp[i] = i;for (int i = 10; i < 20; i++)mp.insert(make_pair(i, i));map<int, int>::iterator it;for (it = mp.begin(); it != mp.end(); it++)printf("%d-->%d\n", it->first, it->second);return 0; }

(2)map中元素的查找和讀取

注意:上述采用下標的方法讀取map中元素時,若map中不存在該元素,則會在map中插入。
因此,
(1)若只是查找該元素是否存在,可以使用函數count(k),該函數返回的是k出現的次數;
(2)若是想取得key對應的值,可以使用函數find(k),該函數返回的是指向該元素的迭代器。

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

#include <stdio.h> #include <map> using namespace std; int main() {map<int, int> mp;for (int i = 0; i < 20; i++)mp.insert(make_pair(i, i));if (mp.count(0))printf("yes!\n");elseprintf("no!\n");map<int, int>::iterator it_find;it_find = mp.find(0);if (it_find != mp.end())it_find->second = 20;elseprintf("no!\n");map<int, int>::iterator it;for (it = mp.begin(); it != mp.end(); it++)printf("%d->%d\n", it->first, it->second);return 0; }

(3)從map中刪除元素

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

m.erase(k)///刪除的是m中鍵為k的元素,返回的是刪除的元素的個數; m.erase(p)///刪除的是迭代器p指向的元素,返回的是void; m.erase(b, e)///刪除的是迭代器b和迭代器e范圍內的元素,返回void。

如下所示:

#include <stdio.h> #include <map> using namespace std; int main() {map<int, int> mp;for (int i = 0; i < 20; i++)mp.insert(make_pair(i, i));mp.erase(0);mp.erase(mp.begin());map<int, int>::iterator it;for (it = mp.begin(); it != mp.end(); it++)printf("%d->%d\n", it->first, it->second);return 0; }

見大佬博客

C/C++STL常用容器用法總結

https://blog.csdn.net/weixin_41162823/article/details/79759081

c++ 關聯容器用法詳解(set與map)

https://blog.csdn.net/weixin_41162823/article/details/80185444#t1

總結

以上是生活随笔為你收集整理的map的专项知识点总结的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。