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的专项知识点总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 综合知识点+计算机
- 下一篇: Shaolin HDU - 4585(m