OSDN Git Service

Update map.md
authorddjxd <42771977+ddjxd@users.noreply.github.com>
Thu, 30 Aug 2018 13:25:07 +0000 (21:25 +0800)
committerGitHub <noreply@github.com>
Thu, 30 Aug 2018 13:25:07 +0000 (21:25 +0800)
docs/ds/stl/map.md

index 95fcf4d..0ebc542 100644 (file)
@@ -5,13 +5,13 @@
 当你在写程序的时候,可能需要存储一些信息,例如存储学生姓名对应的分数,例如:`Tom 0`,`Bob 100`,`Alan 100`。
 但是由于数组下标只能为非负整数,所以无法用姓名来存储,这个时候最简单的办法就是使用 STL 的 `map` 了!
 
-`map` 可任意类型为下标,下面是 `map` 的模型:
+`map` å\8f¯ä»»æ\84\8fç±»å\9e\8b为ä¸\8bæ \87ï¼\88å\9c¨ `mp` ä¸­å\8f«å\81\9a `key`ï¼\8cä¹\9få°±æ\98¯ç´¢å¼\95ï¼\89ï¼\8cä¸\8bé\9d¢æ\98¯ `map` ç\9a\84模å\9e\8bï¼\9a
 
 ```cpp
 map <类型名,类型名> 你想给map起的名字
 ```
 
-其中两个类型名第一个是数组的下标(索引),第二个是对应的元素。例如上面的例子,我们可以这样的存储:
+其中两个类型名第一个是 `key`(索引,可以理解为数组的下标),第二个是`value`(对应的元素)。例如上面的例子,我们可以这样的存储:
 
 ```cpp
 map <string,int> mp
@@ -26,7 +26,7 @@ map <string,int> mp
 
 2.通过插入,例如 `mp.insert(pair<string,int>("Alan",100));`
 
-3.初始化(至少 `C++11`)和数组差不多:
+3.初始化(至少 C++11)和数组差不多:
 ```cpp
 map <string,int> mp= {
                 {"Tom",0},
@@ -42,7 +42,7 @@ map <string,int> mp= {
 
 格式:`if(mp.find()==mp.end())`,意思是如果返回的是 `map` 的末尾,因为 `map` 如果没有查找到元素,迭代器会返回末尾。
 
-其中 `mp.end()` 返回指向map尾部的迭代器
+其中 ```mp.end()``` 返回指向map尾部的迭代器
 
 3.如果你想知道map里全部的元素,那么最正确的做法使用迭代器了,如果你还不会,请查阅之前文章中的迭代器。
 
@@ -51,9 +51,9 @@ for(iter=mp.begin();iter!=mp.end();iter++)
         cout<<iter->first<<" "<<iter->second<<endl;
 ```
 
-其中 `mp.begin()` 返回指向map头部的迭代器
+其中 ```mp.begin()``` 返回指向map头部的迭代器
 
-`iter->first` 是 `map` 索引,例如 `Tom`,而 `iter->second` 是下标
+`iter->first` 是 `key` 索引,例如 `Tom`,而 `iter->second` 是 `value`
 
 当然,如果你想删除 `Tom` 这个元素,那么就可以在循环里加入:
 
@@ -61,7 +61,7 @@ for(iter=mp.begin();iter!=mp.end();iter++)
 if(iter->first=="Tom") mp.erase(iter);//这里的iter是迭代器,
 ```
 
-如果你想清空所有的元素,可以直接 `mp.clear()`
+如果你想清空所有的元素,可以直接`mp.clear()`
 
 - 其他
 
@@ -69,7 +69,7 @@ if(iter->first=="Tom") mp.erase(iter);//这里的iter是迭代器,
 
 - `count()`   返回指定元素出现的次数 ,例如 `mp.count()`
 
-- `swap` 可以交换两个 `map` ,例如 `swap(m1,m2)`
+- `swap()` 可以交换两个 `map` ,例如 `swap(m1,m2)`
 
 - `size()` 返回 `map` 中元素的个数
      
@@ -84,6 +84,6 @@ if(iter->first=="Tom") mp.erase(iter);//这里的iter是迭代器,
 
 ### 更快:基于 `Hash` 实现的 `map`!
 
-这个 `map` 的名字就是 `unordered_map` 了,它的查询,插入,删除的复杂度几乎是 $O(1)$ 级别(不过最坏会达到 $O(N)$)的!所有的操作都和 `map`一样。
+这个 `map` 的名字就是 `hash_map` 了,它的查询,插入,删除的复杂度几乎是 $O(1)$ 级别(不过最坏会达到 $O(N)$)的!所有的操作都和 `map`一样。
 
 不过它的遍历速度会很慢,而且空间占用的会更大。